如果我在@Time-in
中的参数@Time-out
和cmd.Parameters.Add
中放置了一个括号,我收到了错误
日期时间附近的语法不正确。
但如果没有括号,我收到错误
' - '
附近的语法不正确
cmd.CommandText = "UPDATE [q].[dbo].[d] set
Name=@Name," & "[Reserve_date]=
[@Reserve_date],Room=@Room,[Time-in]=[@Time-in],[Time-
out]=[@Time-out] where ID=@ID;"
cmd.Parameters.Add("@ID", SqlDbType.Int).Value = Convert.ToInt32(SID)
cmd.Parameters.Add("@Name", SqlDbType.VarChar).Value = sName
cmd.Parameters.Add("@Reserve_date", SqlDbType.DateTime).Value = sDate
cmd.Parameters.Add("@Room", SqlDbType.VarChar).Value = sRoom
cmd.Parameters.Add("@Time-in", SqlDbType.DateTime).Value = sStart
cmd.Parameters.Add("@Time-out", SqlDbType.DateTime).Value = sEnd
答案 0 :(得分:0)
连字符-
不是sql-server参数名称的有效字符。
例如,将其删除或更改为下划线_
。
摘自TechNet
Microsoft SQL Server无法识别变量名称并已存储 分隔的过程参数。这些类型的标识符 必须遵守常规标识符的规则。
有关标识符的更多信息,请访问:
答案 1 :(得分:0)
您无法命名这样的变量:
第一个字符必须是以下之一:
Unicode标准3.2定义的字母。 Unicode 字母的定义包括从a到z的拉丁字符 A到Z,还有其他语言的字母。
下划线(_),符号(@)或数字符号(#)。 ...
后续字符可包括以下内容:
Unicode标准3.2中定义的字母。
Basic Latin或其他国家/地区脚本中的十进制数字。
at符号,美元符号($),数字符号或下划线。