大家好我在ASP.NET中遇到错误(VB背后的代码),我不知道它意味着什么。 当我执行下面的代码来更新数据库中的表时,出现错误
Dim v_command1 As New SqlCommand
Dim v_sqlcode1 As String
v_sqlcode1 = "Update Session SET Endtime = DATEADD(Hour,'" & DRPL_DURATION.SelectedValue & "','" & TXTBX_START.Text & "') WHERE SessionID = ('" & TXTBOX_SESSIONID.Text & "')"
v_sqlconn.Open()
当我决定更改会议的持续时间时,此代码应该允许我更新会议的结束时间。 我得到的错误是:
Additional information: Argument data type varchar is invalid for argument 2 of dateadd function.
是否有人知道此错误消息的含义。
由于
答案 0 :(得分:3)
正如错误所述,您不能将varchar
数据类型用于DATEADD()
的第二个参数。这是looking for an integer。
如果您传递的值是整数,只需删除单引号:
"[...] Hour, " & DRPL_DURATION.SelectedValue & ", [...]"
如果它不是一个整数并且你实际上是在试图传递一串文字,那么你需要重新思考你正在做什么,因为你无法添加文本约会。
注意:我还强烈建议使用参数化查询,而不是像这样直接连接值。这会在您的代码中引入SQL注入漏洞,该漏洞由查询参数消除。此外,当您将值传递给查询引擎并让引擎决定如何管理数据类型时,您会发现与列数据类型相关的错误更为罕见。
答案 1 :(得分:1)
https://msdn.microsoft.com/en-CA/library/ms186819.aspx
Dateadd正在寻找一个数字作为第二个争论而你传递的是一个字符串(varchar)。
答案 2 :(得分:0)
此错误消息与DATEADD(..).
的第二个参数相关联。您需要使用整数(数字)值。
有关详细信息,请参阅文档DATEDD。