我正在努力解决一些问题,最终我发现了如何修复,但我不知道根本原因。如果我向表单添加DateTimePicker
(在本例中为dtRecordBatchDate
)并且用户没有更改它的默认日期和时间,我使用{DateTimePicker.Value
将Parameters
传递给SQL命令{1}}属性,我收到此错误:
using (OleDbCommand command = new OleDbCommand("INSERT INTO Herbs_Stock (herb_id,batch_number,batch_date,quantity,cost,shipcost) VALUES (?,?,?,?,?,?)", Program.myconnection))
{
command.Parameters.AddWithValue("@herb_id", herb_id);
command.Parameters.AddWithValue("@batchnumber", batch_number);
command.Parameters.AddWithValue("@batch_date", dtRecordBatchDate.Value); // HERE'S THE IMPORTANT PART
command.Parameters.AddWithValue("@quantity", quantity);
command.Parameters.AddWithValue("@cost", cost);
command.Parameters.AddWithValue("@shipcost", shipcost);
command.ExecuteNonQuery();
}
标准表达式中的数据类型不匹配
但是如果我在传递给命令之前只添加一行,它将被修复:
dtRecordBatchDate.Value=DateTime.Today
。
为什么会这样?这很奇怪,因为DateTimePicker.Value
的类型是DateTime
而不是DateTime?
,并且它已经默认为DateTime.Now
(或者几秒前:)。)。我对此非常好奇。