Эй все я пытаюсь сделать следующий запрос на вставку
SqlDataSource userQuizDataSource = new SqlDataSource();
userQuizDataSource.ConnectionString = "Data Source=localhost\\SQLEXPRESS;Initial Catalog=quizApp;Integrated Security=True";
userQuizDataSource.InsertCommand = "INSERT INTO [UserQuiz] ([DateTimeComplete], [Score], [UserName]) VALUES (@DateTimeComplete, @Score, @UserName)";
userQuizDataSource.InsertParameters.Add("DateTimeComplete", DateTime.Now.ToString());
userQuizDataSource.InsertParameters.Add("Score", score.ToString());
userQuizDataSource.InsertParameters.Add("UserName", User.Identity.Name);
int rowsAffected = userQuizDataSource.Insert();
Buti продолжают получать следующую ошибку:
Преобразование типа данных nvarchar к типу данных smalldatetime привело к значению из диапазона. Оператор был завершен.
Кто-либо может выручить меня?
Что возвращает ваш оператор DateTime.Now.ToString ()
??
Какой язык и региональные настройки используются в вашем SQL Server? ожидая ??
У вас там несоответствие ??? Возможно, ваш .NET возвращает формат MM / dd / yyyy
, тогда как SQL Server ожидает dd / MM / yyyy
(или наоборот).
Попробуйте использовать этот код в своем SQL-сервере:
DECLARE @test TABLE (smalldate SMALLDATETIME)
INSERT INTO @test VALUES ('02/21/2010 22:00:32') --
SELECT * FROM @test
Замените мою строку тем, что вы получили от .NET DateTime.Now.ToString ()
- это работает? SQL Server дает более точное сообщение об ошибке?
Затем попробуйте использовать формат ISO-8601 для дат (ГГГГММДД) - это работает для ВСЕХ региональных и языковых настроек в SQL Server - это работает ??
DECLARE @test TABLE (smalldate SMALLDATETIME)
INSERT INTO @test VALUES ('20100221 22:00:32') --
SELECT * FROM @test
Попробуйте изменить это:
userQuizDataSource.InsertParameters.Add("DateTimeComplete", DateTime.Now.ToString());
на это:
userQuizDataSource.InsertParameters.Add("@startdate", SqlDbType.DateTime, DateTime.Now.ToString());
Не пытайтесь преобразовывать дату в строку:
userQuizDataSource.InsertParameters.Add("DateTimeComplete", DateTime.Now);
Edit: Попробуйте следующее:
userQuizDataSource.InsertParameters.Add("DateTimeComplete", TypeCode.DateTime, DateTime.Now.ToString());
Есть другой способ просто передать реальный объект, но я не могу вспомнить ... извините.