ошибка вставки типа DateTime c # в столбец SQL DateTime - PullRequest
0 голосов
/ 29 сентября 2011

я пытаюсь сделать команду INSERT для моей базы данных SQLEXPRESS и получить ошибку при попытке ввести значение в мой столбец DateTime.

это команда sql, которую я использую:

SqlDateTime sTime = new SqlDateTime(book.PublishedDate);                

string sql = string.Format("Insert into Books" +
"(Name, PublishDate, IsInternal) Values" +
"('{0}', '{1}', '{2}')",
book.Name, sTime.Value, book.IsInternal);

книга. Дата публикации - тип DateTime и столбец Опубликованная дата равен sql DateTime

я получаю следующую ошибку: Преобразование типа данных varchar в тип данных datetime привело к значению вне допустимого диапазона.

как я могу решить это?

1 Ответ

2 голосов
/ 29 сентября 2011

Используйте параметризованные запросы. Они поддерживаются практически всеми технологиями доступа к данным, которые вы можете использовать. И они позволяют вам рассматривать даты как даты, а не преобразовывать все в строки.

например. (ADO.Net SqlCommand)

SqlCommand cmd = new SqlCommand("Insert into Books (Name,PublishDate,IsInternal) Values (@Name,@PublishDate,@IsInternal)");
cmd.Parameters.Add(new SqlParameter("@Name", System.Data.SqlDbType.VarChar, 50));
cmd.Parameters.Add(new SqlParameter("@PublishDate", System.Data.SqlDbType.DateTime));
cmd.Parameters.Add(new SqlParameter("@IsInternal", System.Data.SqlDbType.Bit));

cmd.Parameters["@Name"].Value = book.Name;
cmd.Parameters["@PublishDate"].Value = book.PublishedDate;
cmd.Parameters["@IsInternal"].Value = book.IsInternal;

Самый большой источник ошибок, которые люди делают, когда сообщают о проблемах типов данных между своим клиентским кодом и базой данных SQL, - это то, где по какой-то причине они преобразовали все в строки. Мало того, что это обычно менее эффективно, но вы также полагаетесь на то, что по крайней мере два преобразования должны выполняться правильно (Тип -> строка и строка -> Тип), и часто, по крайней мере, одно из этих преобразований будет оставлено на любой Функции преобразования по умолчанию:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...