在两个 Longdates c# MS access 数据库之间获取数据

getting data between two Longdates c# MS access database

大家好,当我使用 Datetimepicker 按 longdate 插入日期时,例如:wednesday, April 26,2017 然后我想在两个日期之间进行搜索,但它不能给我之间的所有日期?

插入代码

cmd.CommandText = "insert into [Table1] ( [Employee Name],[Date],[Hours] ) values ('" + textBox1.Text + "','" + dateTimePicker1.Text + "','" + textBox2.Text + "')";

在代码之间搜索:

cmd.CommandText = "select * from Table1 where [Date] between '" + dateTimePicker1.Text + "' AND '" + dateTimePicker2.Text + "' ";

首先使用参数,因为现在您的代码容易受到 sql 注入的攻击。所以这样做:

cmd.CommandText = ("insert_questions @store_result, @store_title, 
                    @store_des");
    cmd.Parameters.AddWithValue("@store_result", store_result);

更多阅读:Sql command parameters

并使用 dateTimePicker1.Value 而不是应该这样做的文本。

使用参数避免从字符串转换日期值:

cmd.CommandText = "insert into [Table1] ( [Employee Name],[Date],[Hours] ) values (@empName, @date, @hours)";
cmd.Parameters.AddWithValue("@empName", textBox1.Text);
cmd.Parameters.AddWithValue("@date", dateTimePicker1.Value);
cmd.Parameters.AddWithValue("@hours", textBox2.Text);

// ...................

cmd.CommandText = "select * from Table1 where [Date] between @startDate AND @endDate ";
cmd.Parameters.AddWithValue("@startDate", dateTimePicker1.Value);
cmd.Parameters.AddWithValue("@endDate", dateTimePicker2.Value);

您将 DateTime 作为 string 插入,并尝试使用字符串作为过滤器获取数据。

所以,几件事:

  • 确保您的列 Date 是日期类型而不是字符串。
  • 使用 dateTimePicker1.Value 而不是 Text 因为 Value returns DateTime object.
  • 在您的 SQL 命令中使用参数

总结一下:

cmd.CommandText = "insert into [Table1] ( [Employee Name],[Date],[Hours] ) values (?, ? , ?)";
cmd.Parameters.AddWithValue("EmployeeName", textBox1.Text);
cmd.Parameters.AddWithValue("Date", dateTimePicker1.Value);
cmd.Parameters.AddWithValue("Hours", textBox2.Text);



cmd.CommandText = "select * from Table1 where [Date] between ? AND ?";
cmd.Parameters.AddWithValue("DateFrom", dateTimePicker1.Value);
cmd.Parameters.AddWithValue("DateTo", dateTimePicker2.Value);