使用Sql Server进行参数化更新

时间:2018-04-25 12:12:55

标签: c# sql-server winforms

我正在将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的正确格式是什么?

1 个答案:

答案 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;