【问题标题】:Building a SQL query to searching between values of 2 DateTimePickers in C#构建 SQL 查询以在 C# 中的 2 个 DateTimePickers 的值之间进行搜索
【发布时间】: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,就像下面吉拉德格林回答的那样。

标签: c# sql between


【解决方案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... */
} 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-03
    • 1970-01-01
    • 1970-01-01
    • 2021-03-11
    • 1970-01-01
    相关资源
    最近更新 更多