1

我在尝试从我的 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

任何帮助将不胜感激...

4

3 回答 3

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 类型)但是,参数化查询最重要的好处是消除了可能的Sql 注入攻击

于 2013-09-23T14:30:07.313 回答
1

您忘记了您的情况周围的单引号 IE" ' "。

你的陈述应该是

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

于 2013-09-23T14:29:09.437 回答
1

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

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

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

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

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

于 2013-09-23T14:31:09.667 回答