【发布时间】:2012-02-01 14:05:20
【问题描述】:
我有一个带有表单的 Web 应用程序,我试图将其传递到 ASP.NET 服务器(使用 VB.NET),然后传递到 MS SQL Server 表。该表单在几个文本框中使用 jQuery 日期选择器并将它们格式化为MM/dd/yyyy。然后表单字段通过 PageMethod 传递到 Web 服务器,该服务器获取各种字段值并将它们组合成 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
注意:我已经尝试了大约 20 种不同的方法来解析日期、将它们转换为日期、更改格式,但都没有奏效。
注意2:最后的条件语句只是为了防止空日期字段作为“1/1/1900”存储在SQL DB中,而是作为实际的SQL NULL值。不过,从调试来看,这似乎不是问题 - 是当有一个实际值时才会触发错误。
如果有人能看到我做错了什么以及如何解决它,将不胜感激。提前感谢您的帮助!
【问题讨论】:
标签: asp.net sql vb.net webforms