在两个 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);
并使用 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);
大家好,当我使用 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);
并使用 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
returnsDateTime
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);