-1

我的工作正在工作,它在 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();

            }
4

1 回答 1

0

好吧,我看到这两个日期是相同的(可能您想在 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 Injection 的可能性)

于 2013-10-12T10:48:47.710 回答