【发布时间】:2018-02-20 06:58:33
【问题描述】:
如果我在cmd.Parameters.Add 中的参数@Time-in 和@Time-out 中添加一个括号,则会出现错误
日期时间附近的语法不正确。
但是如果没有括号,就会报错
'-' 附近的语法不正确
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
【问题讨论】:
-
您的参数不能用括号括起来。
[@Reserve_date]、[@Time-in]、[@Time-out] -
" & "@第二行代码是什么意思? -
"&" 使用是因为我的 vs , 是自动换行
-
但如果它没有用括号括起来,我得到一个错误 Incorrect Syntax near '-'
-
停止不良做法。避免在 tsql 标识符中使用特殊字符。不要在没有非常好的理由且仅在您了解其含义的情况下在应用程序的 tsql 语句中使用 3 或 4 部分对象名称。您的连接字符串应正确设置,以便为您使用的服务器实例和数据库提供适当的上下文。将数据库名称添加到表引用中只会在您更改连接字符串时导致问题(突然发现您的应用程序不再正常工作)。
标签: sql-server vb.net tsql syntax-error