构建 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 的值之间进行搜索的主要内容,如果未能解决你的问题,请参考以下文章