使用OleDbParameter在Access中插入日期/时间值

时间:2011-09-23 00:08:14

标签: c# ms-access parameters oledb

我正在尝试在oledb中插入(ms访问数据库) 名为objectdate的字段是日期/时间

我用来添加参数的代码就是这个,但我收到了错误。

  OleDbParameter objectdate = new OleDbParameter("@objectdate", OleDbType.DBDate);
  objectdate.Value = DateTime.Now; cmd.Parameters.Add(objectdate);

错误:

  

标准表达式中的数据类型不匹配。

3 个答案:

答案 0 :(得分:10)

OleDB不喜欢datetime参数中的毫秒数。如果你删除毫秒就可以了。另见:How to truncate milliseconds off of a .NET DateTime

答案 1 :(得分:0)

你可以使用。

   OleDbParameter objectdate = new OleDbParameter("@objectdate", DbType.DateTime);
   objectdate.Value = DateTime.Now; cmd.Parameters.Add(objectdate);

或使用日期的Ole Automation版本。

OleDbParameter objectdate = new OleDbParameter("@objectdate", DbType.DateTime);
       objectdate.Value = DateTime.Now.ToOADate(); cmd.Parameters.Add(objectdate);

或者您可以将日期时间作为文字输入,因为Datetime.ToString()会删除访问无法使用的毫秒数。

cmd.Parameters.AddWithValue("@objectdate", DateTime.Now.ToString());

这应该有效。

答案 2 :(得分:0)

句子:

OleDbParameter objectdate = new OleDbParameter("@objectdate", DbType.DateTime);

在visual basic 2008中未被接受,我使用如下:

ordeen.Parameters.Add(New OleDb.OleDbParameter("objectdate", DbType.DateTime))
ordeen.Parameters("objectdate").Value=object.text   'but its not run

下一句只在sqlserver中起作用:

cmd.Parameters.AddWithValue("@objectdate", DateTime.Now.ToString());

Access中的问题仍然存在