【问题标题】:C# between two dates searchC# 两个日期之间的搜索
【发布时间】:2013-05-08 18:40:19
【问题描述】:

我有一个数据(访问)并且我使用 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;
}

但我总是小心谨慎。

我能做什么?

【问题讨论】:

  • 您收到的警告是什么?

标签: c# date datagridview filter warnings


【解决方案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 是保留关键字,需要用方括号封装
  • 在哪里初始化连接? (不要使用全局连接对象)
  • 您的日期字段是日期时间还是字符串(不好,非常不好)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-07-01
    • 2023-04-08
    • 2012-08-14
    • 2013-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多