2013-05-08 72 views
0

我有一个数据(访问),我使用的是datetimePicker。我有近千DATASC#两个日期之间搜索

Name:  Birthday:  
AAAA   05.02.2000 
BBBB   01.08.1995 
CCCC   04.07.1995 
DDDD   05.07.1995 

我用2 dateTimePicker的和一个按钮,datetimePicker2第一次,datetimePicker3最后时间,然后点击过滤器按钮。我想告诉我的datagridview上forexample 1995年1月1日 - 1995年1月12日他们是谁生名单

我用这个代码:

private void btnFiltre_Click(object sender, EventArgs e) 
{ 
    table.Clear(); 
    OleDbDataAdapter adtr = new OleDbDataAdapter("SELECT * FROM data WHERE date BETWEEN'" + 
       dateTimePicker2.Text + "' AND '" + dateTimePicker3.Text + "'", cnn);   
    adtr.Fill(table); 
    dataGridView1.DataSource = table; 
} 

但我一直引以为戒。

我能做些什么?

+0

什么是你所得到的警告? – devilfish17 2013-05-08 18:42:43

回答

1

许多细节丢失,但像往常一样:不要使用字符串连接来构建sql命令。
使用参数化查询这样

private void btnFiltre_Click(object sender, EventArgs e) 
{ 
    table.Clear(); 
    OleDbDataAdapter adtr = new OleDbDataAdapter("SELECT * FROM data WHERE date BETWEEN ? AND ?", cnn) 
    adtr.SelectCommand.Parameters.AddWithValue("@p1",dateTimePicker2.Value) 
    adtr.SelectCommand.Parameters.AddWithValue("@p2",dateTimePicker3.Value) 
    adtr.Fill(table); 
    dataGridView1.DataSource = table; 
} 

详细丢失:

  • 的数据库您使用的?如果是MS-Access,则date 是保留关键字,需要用方括号封装
  • 你在哪里初始化连接? (不要使用全局连接对象)
  • 是您的日期字段日期时间或字符串(不好,非常不好)
+0

非常感谢你的工作...... :))) – 2013-05-08 18:51:40

相关问题