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

本文关键字:日期 时间 插入 OleDbParameter Access 使用 | 更新日期: 2023-09-27 18:09:20

我试图做一个插入在oledb(ms访问数据库)objectdate字段是日期/时间

我用来添加参数的代码是这样的,但是我得到错误。

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

错误:

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

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

OleDB不喜欢在datetime参数中设置毫秒。如果你去掉毫秒,它就会正常运行。参见:如何截断。net DateTime的毫秒数

你可以使用。

   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());

句子:

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的问题还在继续

当在.netstandard2.0中使用OleDb时,您可以使用仅用键值对添加.AddWithValue。类型是从value对象推断出来的:

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

不要转换为字符串,因为这会破坏推断类型的能力。