ExecuteNonQuery 出错
Posted
技术标签:
【中文标题】ExecuteNonQuery 出错【英文标题】:Error at ExecuteNonQuery 【发布时间】:2016-09-07 05:36:10 【问题描述】:我不是一个很好的程序员,但我认为代码是正确的。任何人都可以检查其中是否有错误,因为我总是在 executenonquery 行收到错误。
错误是:
"'9' 附近的语法不正确。" & vbCrLf & "未闭合的引号 在字符串 ',@memberpic)' 之后。"
和/或
“System.Data.SqlClient.SqlException”类型的未处理异常 发生在 System.Data.dll
附加信息:“9”附近的语法不正确。
Private Sub btnSave_Click(sender As Object, e As EventArgs) Handles btnSave.Click
cn.Open()
Using cmd As New SqlClient.SqlCommand("INSERT INTO tblMembers(name, contactno, address, birthday, baptism, ministry, memberpic)VALUES('" & txtName.Text & "','" & txtContactNo.Text & "','" & txtAddress.Text & "',''" & dtpBirthday.Text & "','" & dtpBaptism.Text & "','" & txtMinistry.Text & "',@memberpic)", cn)
cmd.Parameters.Add(New SqlClient.SqlParameter("@memberpic", SqlDbType.Image)).Value = IO.File.ReadAllBytes(a.FileName)
i = cmd.ExecuteNonQuery
End Using
If (i > 0) Then
MsgBox("Save " & i & " record successfully")
Clear()
End If
cn.Close()
ShowRecord()
End Sub
【问题讨论】:
【参考方案1】:TextBox
元素之一中的一个字符串可能包含一个单引号 '
。
我的建议是,省去一些痛苦,并参数化 SQL 语句中的所有值。出于多种原因,这是一种很好的编程习惯,但它也可以解决您对可能来自 TextBox
的转义字符串的迫切需求。
首先你标记你的 SQL 语句。
...
VALUES(@name,@contactno,@address,@birthday,@baptism,@ministry,@memberpic)
然后,你设置你的参数
...
cmd.Parameters.Add(New SqlClient.SqlParameter("@name", SqlDbType.Varchar)).Value = txtName.Text
【讨论】:
【参考方案2】:正如错误所说,您需要关闭字符串的单引号
& "',@memberpic)"
应该是
& "',@memberpic) '"
^^^^
【讨论】:
以上是关于ExecuteNonQuery 出错的主要内容,如果未能解决你的问题,请参考以下文章
使用 sybase AseCommand 运行 ExecuteNonQuery() 时出错
由于添加了奇怪的字符,运行 Pymssql.Cursor.Execute 时出错
ORA-00942 在 EXECUTE IMMEDIATE 创建表后引用表时出错