传递DateTimePicker.Value时数据类型不匹配

时间:2013-11-28 12:23:52

标签: c# sql datetime datetimepicker oledbcommand

我正在努力解决一些问题,最终我发现了如何修复,但我不知道根本原因。如果我向表单添加DateTimePicker(在本例中为dtRecordBatchDate)并且用户没有更改它的默认日期和时间,我使用{DateTimePicker.ValueParameters传递给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(或者几秒前:)。)。我对此非常好奇。

0 个答案:

没有答案