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() 时出错

确定 ExecuteNonQuery 成功执行 [重复]

由于添加了奇怪的字符,运行 Pymssql.Cursor.Execute 时出错

ORA-00942 在 EXECUTE IMMEDIATE 创建表后引用表时出错

php之PDOStatement::execute数组参数带有键值会出错

mongodb rebo 3T 执行出错 failed to execute script 但是执行成功 171条