Неверный тип данных в выражении критериев | Доступ, OleDb, C#

На SQL Server можно использовать эти Truncate Table команда, которая быстрее, чем постоянный клиент удаляет, и также использует меньше ресурсов. Это сбросит любые поля идентификационных данных назад к значению семени также.

недостатки усеченных состоят в том, что это не может использоваться на таблицах, на которые ссылаются внешние ключи, и это не запустит триггеров. Также Вы не будете в состоянии откатывать данные, если что-нибудь пойдет не так, как надо.

6
задан Tony Toews 16 October 2009 в 23:15
поделиться

5 ответов

Во-первых, ваш оператор SQL не должен быть:

"UPDATE Customers SET LastLogin=@LastLogin"

Во-вторых, причиной, по которой вы получаете сообщение об ошибке несоответствия даты, вероятно, будет ваш переданный символ '?' в качестве даты и времени в поле LastLogin вместо фактического параметра времени входа.

0
ответ дан 17 December 2019 в 04:48
поделиться

Если это не так

"UPDATE Customers SET LastLogin='@LastLogin'"

И @LastLogin должен быть

logintime.ToString("yyyy-MM-dd hh:mm:ss")

править Не могли бы вы просто встроить все это?

"UPDATE Customers SET LastLogin='" + logintime.ToString("yyyy-MM-dd hh:mm:ss") + "'"
0
ответ дан 17 December 2019 в 04:48
поделиться

Попробуйте установить свойство "DBTYPE" параметра, чтобы идентифицировать его как date, datetime или datetime2, в зависимости от ситуации ...

prms[0].DbType = DbType.DateTime;

Для нового вызова OleDbParameter () существует 7 подписей, поэтому вы можете изменить экземпляр подписи или просто сделать это явно, как я пробовал выше, поскольку в этом случае у вас был только 1 параметр .

0
ответ дан 17 December 2019 в 04:48
поделиться

может вместо этого попробовать

DateTime.Now.ToShortDateString() + ' ' + DateTime.Now.ToShortTimeString()

, передать его как String (и, возможно, заключить с # тогда)

0
ответ дан 17 December 2019 в 04:48
поделиться

Существует известная проблема с OleDb и датами. Попробуйте сделать что-то вроде:

OleDbParameter p = parameter as OleDbParameter;
if (null == p)
  parameter.DbType = DbType.DateTime;
else
  p.OleDbType = OleDbType.Date;

Или используйте явную строку формата:

value.ToString("yyyy-MM-dd hh:mm:ss")
4
ответ дан 17 December 2019 в 04:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: