使用Visual Studio编码C#我有一个Windows窗体并有两个日期时间选择器,我如何选择两个不同的日期范围并从我的SQL数据库中检索数据。这就是我到目前为止所做的......
SqlConnection ssl = new SqlConnection();
ssl.ConnectionString = @"connection goes ";
ssl.Open();
var a = dateTimePicker1.Value.ToString("yyyy-MM-dd");
var b = dateTimePicker2.Value.ToString("yyyy-MM-dd");
SqlDataAdapter ad = new SqlDataAdapter("SELECT name FROM DATABASENAME WHERE columnname >='" + a + "' AND modified_time <= '"+ b +"'", ssl);
DataTable dt = new DataTable();
ad.Fill(dt);
dataGridView1.DataSource = dt;
答案 0 :(得分:2)
执行此操作时:
"... >= '" + a + "' AND ..."
您正在创建一个包含日期值的字符串文字。数据库不会把它当作日期,如果查询执行它就不会做你想做的事。
相反,参数化您的查询,这是传递日期(或任何其他值)的正确方法:
SqlDataAdapter ad =
new SqlDataAdapter("SELECT name FROM DATABASENAME WHERE columnname >= @Date1 AND modified_time <= @Date2", ssl);
ad.SelectCommand.Parameters.AddWithValue("@Date1", dateTimePicker1.Value);
ad.SelectCommand.Parameters.AddWithValue("@Date2", dateTimePicker2.Value);