0

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

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

我使用 2 datetimePicker 和一个按钮,第一次使用 datetimePicker2,最后一次使用 datetimePicker3,然后单击过滤器按钮。我想在例如 01.01.1995 - 01.12.1995 上向我展示 datagridview,他们是谁出生的列表

我使用了这段代码:

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

但我总是警告。

我能做什么?

4

1 回答 1

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 是保留关键字,需要封装在方括号中
  • 你在哪里初始化连接?(不要使用全局连接对象)
  • 您的日期字段是日期时间还是字符串(不好,非常不好)
于 2013-05-08T18:45:05.740 回答