我正在将winforms应用程序从MS Access转换为SQLServer Express。
我有一些在整个应用程序中用于更新数据库的代码,我传入表名,要更新的字段的条目ID以及数组中的值...通过访问正常工作
代码生成一个SQL statememnt,它作为查询与值一起作为参数传递......示例输出是
UPDATE userVersion SET lastUpdated=?, userId=?, userName=?, version=? WHERE userId = 1299
如果我尝试在sqlserver上运行此命令,则系统会因此错误而崩溃
System.Data.SqlClient.SqlException:'''附近的语法不正确。 '?'。'
附近的语法不正确
sql server的正确格式是什么?
答案 0 :(得分:2)
根据您使用SQLClient执行查询的错误,但查询的结构看起来可能更接近ODBC的命令。
如果有帮助,System.Data.ODBC.ODBCCommand使用“?”符号作为参数的占位符。在这种情况下,参数的顺序很重要。 https://msdn.microsoft.com/en-us/library/system.data.odbc.odbccommand.parameters(v=vs.110).aspx
System.Data.SQLClient.SQLCommand使用命名变量(例如@MyVariable)来指定变量。在这种情况下,只要正确指定了名称,顺序就不重要了。 https://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.parameters(v=vs.110).aspx
ODBCCommand看起来像:
UPDATE Sales.Store SET Demographics = @demographics WHERE CustomerID = ?;
虽然SQLCommand看起来像:
UPDATE Sales.Store SET Demographics = @demographics WHERE CustomerID = @ID;