将日期时间插入数据库

时间:2014-10-09 15:49:27

标签: vb.net oledb

我使用OleDbCommand使用参数插入日期/时间字段,并获得一个异常,说明"数据类型在条件表达式中不匹配。"

我已经识别出导致我的问题的参数,并且执行以下代码会导致我的错误:

insertCmd.CommandText = "INSERT INTO myTable ([ParameterName]) VALUES (?)"
insertCmd.Parameters.AddWithValue("@ParameterName", Now)
insertCmd.Connection = _connection
return insertCmd.ExecuteNonQuery()

检查导致问题的参数,我得到以下参数{@ParameterName}

ChangeID: 1
DbType: DateTime {6}
Direction: Input {1}
IsNullable: False
Offset: 0
OleDbType: DBTimeStamp {135}
ParameterName: "@ParameterName"
Precision: 0
PrecisionInternal: 0
Scale: 0
ScaleInternal: 0
Size: 0
SourceColumn: ""
SourceColumnNullMapping: False
SourceVersion: Current {512}
Value: #10/9/2014 11:26:15 AM# {Date}

它似乎被识别为DbType DateTime,插入参数的Object是Date对象,但它仍然告诉我数据类型有问题。

我发现此问题的大部分地方都在尝试将字符串写入日期/时间字段,我绝对不会这样做。

1 个答案:

答案 0 :(得分:1)

尝试仅使用Date值,因为看起来您的数据库字段只是一个日期值(我猜):

insertCmd.Parameters.AddWithValue("@ParameterName", Now.Date)

或者可能是OleDB只是被类型混淆了,所以自己设置:

Dim p As New OleDbParameter("@parameterName", OleDbType.Date)
p.Value = Now
insertCmd.Parameters.Add(p)