构建 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#连接ACCESS数据库,显示到dataGridView表格