首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ExecuteNonQuery错误

ExecuteNonQuery错误
EN

Stack Overflow用户
提问于 2016-09-07 05:36:10
回答 2查看 86关注 0票数 1

我不是一个很好的程序员,但我认为代码是正确的。谁能检查其中是否有错误,因为我总是在executenonquery行得到一个错误。

错误是:

{“在‘9’附近不正确的语法”& vbCrLf &“字符串‘后的未闭合引号,@memberpic’。”} 和/或 System.Data.SqlClient.SqlException类型的未处理异常发生在System.Data.dll中 附加信息:“9”附近的语法不正确。

代码语言:javascript
复制
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
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-09-07 05:50:36

TextBox元素中的一个字符串可能包含一个单引号'

我的建议是,省去一些痛苦,并将SQL语句中的所有值参数化。这是一个很好的编程实践,原因有很多,但它也将解决您转义可能来自TextBox的字符串的迫切需要。

首先,标记SQL语句。

代码语言:javascript
复制
...
VALUES(@name,@contactno,@address,@birthday,@baptism,@ministry,@memberpic)

然后,设置参数

代码语言:javascript
复制
... 
cmd.Parameters.Add(New SqlClient.SqlParameter("@name", SqlDbType.Varchar)).Value = txtName.Text
票数 0
EN

Stack Overflow用户

发布于 2016-09-07 05:38:46

正如错误所述,您需要关闭字符串的单引号。

代码语言:javascript
复制
& "',@memberpic)"

应该是

代码语言:javascript
复制
& "',@memberpic) '"
                ^^^^
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39361883

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档