两个日期之间的C#搜索

时间:2013-05-08 18:40:19

标签: c# date datagridview filter warnings

我有一个数据(访问),我使用datetimePicker。我有近千个数据

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

我首次使用2个datetimePicker和一个按钮,datetimePicker2,最后一次使用datetimePicker3,然后单击“过滤器”按钮。我希望告诉我datagridview例如01.01.1995 - 01.12.1995他们出生的人是谁

我使用了这段代码:

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;
}

但我总是警告。

我能做什么?

1 个答案:

答案 0 :(得分: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 是一个保留关键字,需要用方括号括起来
  • 您在哪里初始化连接? (不要使用全局连接对象)
  • 您的日期字段是日期时间还是字符串(错误,非常糟糕)