如何使用两个日期之间的日期从我的数据库中获取数据
本文关键字:日期 我的 数据库 数据 获取 之间 两个 何使用 | 更新日期: 2023-09-27 18:35:15
我的工作正在工作,它在 DataGridView 中输出我的表列名称,但我的数据没有显示,我在这里缺少什么吗?
private void button1_Click(object sender, EventArgs e)
{
DateTime dt = this.dateTimePicker1.Value.Date;
DateTime dt2 = this.dateTimePicker1.Value.Date;
command.CommandType = CommandType.Text;
command.CommandText = ("SELECT * FROM BillingSystem WHERE DateOfTransaction BETWEEN #" + dt.ToShortDateString() + "# AND #" + dt2.ToShortDateString() + "#");
OleDbDataAdapter adapter = new OleDbDataAdapter(command.CommandText, connectionBilling);
DataSet ds = new DataSet();
adapter.Fill(ds);
dataGridView1.DataSource = ds.Tables[0];
connectionBilling.Close();
}
好吧,我看到两个日期是相同的(可能您想在 BETWEEN 语句中包含一整天)。因此,我会尝试将您的查询更改为使用参数化查询而不是字符串串联并修复日期包含部分。
private void button1_Click(object sender, EventArgs e)
{
string cmdText = "SELECT * FROM BillingSystem " +
"WHERE DateOfTransaction BETWEEN ? AND ?";
DateTime dt = this.dateTimePicker1.Value.Date;
DateTime dt2 = this.dateTimePicker1.Value.Date.AddMinutes(1440);
command.CommandText = cmdText;
command.Parameters.AddWithValue("@p1",dt1);
command.Parameters.AddWithValue("@p2",dt2);
OleDbDataAdapter adapter = new OleDbDataAdapter(command, connectionBilling);
DataSet ds = new DataSet();
adapter.Fill(ds);
dataGridView1.DataSource = ds.Tables[0];
connectionBilling.Close();
}
请注意,我为您的第二次约会添加了 1440 分钟(24 小时)。
这将允许在 BETWEEN 语法中包含一整天,因为 Access 还将 TIME 部分存储在 DateOfTransaction 字段中,如果没有此修复,则任何日期都不会与查询匹配(除非某些传输恰好发生在午夜)
此外,参数化查询消除了在日期周围指定任何格式的需要(并且没有 Sql 注入的可能性)