构建 SQL 查询以在 C# 中的 2 个 DateTimePickers 的值之间进行搜索

Posted

技术标签:

【中文标题】构建 SQL 查询以在 C# 中的 2 个 DateTimePickers 的值之间进行搜索【英文标题】:Building a SQL query to searching between values of 2 DateTimePickers in C# 【发布时间】:2016-07-15 13:45:29 【问题描述】:

如何使用 datetimepicker1.text 和 datetimepicker2.text 在数据库中进行搜索 我是这样写的:

"Select * from gelirler where borc_tarihi between" + dateTimePicker1.Text + "'+"'and" + dateTimePicker2.Text, baglanti);

但它不起作用。

【问题讨论】:

尝试查看您生成的 sql 查询并直接在数据库管理器中执行它。如果您发布的代码与您的代码相同,则您在 and 周围缺少空格 编写你的代码,这样就不会像var query = "SELET * FROM gelirler WHERE borc_tarihi BETWEEN '"+dateTimePicker1.Text+"'+"' AND '"+dateTimePicker2.Text + "'";那样被误解 显然不行。查询未正确编写。在*and 之后应该有适当的空格。顺便问一下baglanti 是什么。 不要这样创建 SQL 查询。这是黑客通过 SQL 注入攻击您的数据库的开放漏洞。 总是使用SqlParameter,就像下面吉拉德格林回答的那样。 【参考方案1】:

您的查询中的'' 似乎有问题。 应该是

var query = "select * from gelirler 
             where borc_tarihi between '"+ dateTimePicker1.Text +"' and '"+ dateTimePicker2.Text +"'"

但我建议您一起查看 parameterized queries。以避免 sql 注入。

using (SqlCommand command = 
    new SqlCommand("select * from gelirler where borc_tarihi between @begin_time and @end_time", connection))

    command.Parameters.Add("@begin_time", SqlDbType.Datetime);
    command.Parameters["@begin_time"].Value = datetimePicker1.Text;

    command.Parameters.Add("@end_time", SqlDbType.Datetime);
    command.Parameters["@end_time"].Value = datetimePicker2.Text;
    /* execute the query... */
 

【讨论】:

以上是关于构建 SQL 查询以在 C# 中的 2 个 DateTimePickers 的值之间进行搜索的主要内容,如果未能解决你的问题,请参考以下文章

如何避免从 C# 构建的 Sql Server 2005 参数化查询变慢

如何通过单击按钮 [C#] 执行 2 个 sql 查询

C#连接ACCESS数据库,显示到dataGridView表格

是否可以将 SQL 注释添加到使用 ORM 构建的查询中?

如何创建查询以在 Magnolia 的 2 个工作区进行搜索?

SQL:根据 B 列中的布尔值更改 SELECT 查询以在 A 列上显示不同的值