Member 13894029 Ответов: 1

Ошибка Datepicker "ошибка преобразования типа данных nvarchar в datetime


это происходит, когда я хочу сохранить datetime в sql server

Что я уже пробовал:

программа sqlcmd.Параметры.AddWithValue("@SmBagDatePurchased", txtPurDate.Text.Trim());

1 Ответов

Рейтинг:
7

OriginalGriff

Просто: введенная дата не является допустимым значением datetime при обработке SQL.
Это означает, что либо пользователь ввел неверные данные, либо параметры компьютера, на котором выполняется SQL, отличаются от ожидаемых пользователем.

В любом случае решение одно и то же: обработайте пользовательские данные в значение DateTime и передайте его непосредственно, если оно действительно:

DateTime dt;
if (!DateTime.TryParse(txtPurDate.Text.Trim(), out dt))
   {
   // Bad user input - tell him what the problem is
   ...
   return;
   }
...
sqlCmd.Parameters.AddWithValue("@SmBagDatePurchased", dt);
Таким образом, плохие данные не попадают в БД, и нет никакого риска неправильного толкования текстовой даты. В конце концов, какая дата 01/02/03? Как только вы достигнете SQL Server, весь пользовательский контекст будет потерян, так что нет никакого способа определить это.

Я бы также предположил, что ввод на основе даты лучше обрабатывается с помощью DateTimePicker или аналогичного, а не текстового поля, поскольку это не допускает плохих дат и дает вам значение DateTime непосредственно без необходимости его преобразования.


Member 13894029

спасибо это сработало :)

OriginalGriff

Всегда пожалуйста!