我使用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对象,但它仍然告诉我数据类型有问题。
我发现此问题的大部分地方都在尝试将字符串写入日期/时间字段,我绝对不会这样做。
答案 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)