我有一个有关更新表中数据的问题。这是代码:
Dim cmdUp As New SqlCommand("UPDATE TblQuestion SET (QuestionTxt =" + question.Text + ") where QuestionId=@id", conn)
conn.Open()
cmdUp.Parameters.AddWithValue("@id", result)
cmdUp.ExecuteNonQuery()
conn.Close()
错误,第(')行附近的语法不正确cmdUp.ExecuteNonQuery()
。因此,我要如何解决此错误?
您的问题是由于暂定参数传递字符串值而不将其括在单引号中引起的。将您放在question.Text
单引号之间可以立即解决问题。但这不是处理用作sql命令的字符串文本的正确方法。
这种情况只有一种方法。使用参数化查询(顺便说一句,您查询的一半已经被参数化了,为什么不输入问题文本呢?)
Dim cmdUp As New SqlCommand("UPDATE TblQuestion " & _
"SET QuestionTxt =@quest " & _
"where QuestionId=@id", conn)
conn.Open()
cmdUp.Parameters.AddWithValue("@id", result)
cmdUp.Parameters.AddWithValue("@quest", question.Text)
cmdUp.ExecuteNonQuery()
conn.Close()
参数化查询避免了如其他答案中所述的Sql Injection,但也避免了解析错误。如果您的用户键入包含单引号的问题会怎样?我收到另一个语法错误。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句