У меня есть веб-приложение с формой, которую я пытаюсь передать на сервер ASP.NET (используя VB.NET), а затем на таблицу MS SQL Server. Форма использует указатель даты jQuery в нескольких текстовых полях и форматирует их как MM/dd/yyyy
. Затем поля формы передаются через PageMethod на веб-сервер, который принимает различные значения полей и объединяет их в команду SQL UPDATE.
Я постоянно получаю следующую ошибку, когда пытаюсь выполнить команду SQL:
Conversion failed when converting date and/or time from character string.
Вот код на сервере:
Using myConn As New System.Data.SqlClient.SqlConnection(CString.ConnectionString)
myConn.Open()
Dim cmd As New System.Data.SqlClient.SqlCommand("UPDATE table " & _
"SET type = '" & type & "', " & _
"target = '" & "@target" & "', " & _
"patient = '" & patient & "', " & _
"dob = '" & "@dob" & "' " & _
"WHERE serial = '" & serial & "'", myConn)
cmd.Parameters.Add(SqlParameter("@target", Data.SqlDbType.Date))
cmd.Parameters.Add(SqlParameter("@dob", Data.SqlDbType.Date))
If target = "" Then
cmd.Parameters("@target").Value = Data.SqlTypes.SqlDateTime.Null
Else
cmd.Parameters("@target").Value = target
End If
If dob = "" Then
cmd.Parameters("@dob").Value = Data.SqlTypes.SqlDateTime.Null
Else
cmd.Parameters("@dob").Value = dob
End If
cmd.ExecuteNonQuery()
End Using
Примечание. Я испробовал около двадцати различных способов анализа дат, преобразования их в даты, изменения форматов, и ни один из них не сработал.
Примечание 2. Условные операторы в конце просто предотвращают сохранение пустых полей даты в БД SQL как «1/1/1900», а не как фактическое значение SQL NULL. Однако после отладки создается впечатление, что проблема не в этом, а в том, что при наличии фактического значения возникает ошибка.
Если кто-нибудь увидит, что я делаю неправильно, и как я могу это исправить, это будет с благодарностью. Заранее спасибо за помощь!