Вставить дату и время в базу данных
Я использую 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 и объект, вставленный в parameters-это объект даты, но он все еще говорит мне, что есть проблема с типом данных.
Большинство мест, где я видел эту проблему, пытались записать строку в поле даты / времени, чего я определенно не делаю.
1 ответ:
Попробуйте использовать только значение даты, так как кажется, что ваше поле базы данных является только значением даты (я предполагаю):
insertCmd.Parameters.AddWithValue("@ParameterName", Now.Date)
Или может быть, что OleDB просто смущен типом, поэтому установите его самостоятельно:
Dim p As New OleDbParameter("@parameterName", OleDbType.Date) p.Value = Now insertCmd.Parameters.Add(p)