2016-09-07 80 views
1

我不是一個很好的程序員,但我認爲代碼是正確的。任何人都可以檢查它是否有錯誤,因爲我總是在執行查詢行發現錯誤。ExecuteNonQuery出錯

錯誤是:

{ 「附近有語法錯誤 '9'」。 & vbCrLf &}

和/或

類型的未處理的異常 「閉合的引號 字符串 '@ memberpic)'。之後,」 'System.Data.SqlClient.SqlException' 發生在系統.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 

回答

0

一個字符串的可能是TextBox要素之一包含單引號'

我的建議,節省一些痛苦,並參數化SQL語句中的所有值。由於各種各樣的原因,這是很好的編程練習,但它也將解決您立即需要從TextBox中刪除字符串的問題。

首先你標記你的SQL語句。

... 
VALUES(@name,@contactno,@address,@birthday,@baptism,@ministry,@memberpic) 

然後,您將參數設置

... 
cmd.Parameters.Add(New SqlClient.SqlParameter("@name", SqlDbType.Varchar)).Value = txtName.Text 
0

由於錯誤說你需要關閉單引號的字符串

& "',@memberpic)" 

應該

& "',@memberpic) '" 
       ^^^^