【问题标题】:Error at ExecuteNonQueryExecuteNonQuery 出错
【发布时间】: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

【问题讨论】:

    标签: mysql sql visual-studio-2015


    【解决方案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) '"
                      ^^^^
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-12-05
        • 1970-01-01
        • 1970-01-01
        • 2020-09-22
        • 2016-03-07
        • 2013-03-08
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多