VB .NET SQL删除错误'''附近的语法不正确

时间:2013-09-23 14:26:50

标签: sql vb.net visual-studio-2012 sql-server-2012 vb.net-2010

我有问题试图从我的VS 2012中删除记录而我正在使用sql server 2012,这是我的讲师的任务,我无法解决它

现在这就是我所拥有的

Private Sub bt_hapus_Click(sender As Object, e As EventArgs) Handles bt_hapus.Click
    Try
        Dim sqlda As New SqlClient.SqlDataAdapter("Delete from tabelpasien where No_Rkm_Mds=" & Me.txt_rkm_mds.Text, Me.SqlConnection1)
        sqlda.Fill(dspasien, "tabelpasien")
        MsgBox("Data telah berhasil dihapus")
        bersih()
        pasif()
        normal()
    Catch ex As Exception
        MsgBox(ex.Message)
    End Try
End Sub

任何帮助都会被大大贬低......

3 个答案:

答案 0 :(得分:6)

使用SqlCommand和ExecuteNonQuery方法执行删除命令。

您的代码应为

Try
    Dim cmd = New SqlClient.SqlCommand("Delete from tabelpasien where No_Rkm_Mds=@rkm", Me.SqlConnection1)
    cmd.Parameters.AddWithValue("@rkm", Me.txt_rkm_mds.Text)
    cmd.ExecuteNonQuery()
    ....

使用参数化查询,您不必在where值附近放置引号(如果基础字段是任何类型的char / varchar / nvarchar类型),但参数化查询的最重要的好处是消除a可能的Sql Injection攻击

答案 1 :(得分:1)

您已经忘记了您的单引号I.E.“'”来自您的情况。

你的陈述应该是

Delete From tabelpasien where No_Rkm_Mds='" + Me.txt_rkm_mds.Text + "'"

答案 2 :(得分:1)

如果这是SQL SERVER,则语句中不应该有FROM

Dim sqlda As New SqlClient.SqlDataAdapter("DELETE tabelpasien where No_Rkm_Mds=" & Me.txt_rkm_mds.Text, Me.SqlConnection1)

如果No_Rkm_MdsVARCHARNVARCHAR等等,则该值必须包含在' s中。

Dim sqlda As New SqlClient.SqlDataAdapter("DELETE tabelpasien where No_Rkm_Mds=`" & Me.txt_rkm_mds.Text & "`", Me.SqlConnection1)

最后,您应该考虑使用SQL参数来避免SQL注入。