【问题标题】:VB .NET SQL Delete error 'incorrect syntax near '='VB .NET SQL删除错误''='附近的语法不正确
【发布时间】:2013-09-23 14:26:50
【问题描述】:

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

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

【问题讨论】:

  • 字段No_Rkm_Mds的数据类型是什么?
  • 然后,错误是文本框值周围缺少引号,但是,正如我在下面的回答中所解释的,永远不要使用字符串连接来构建 SQL 命令。

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


【解决方案1】:

使用 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 Injection攻击

【讨论】:

    【解决方案2】:

    你忘记了你的条件周围的单引号 I.E." ' "。

    你的陈述应该是

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

    【讨论】:

      【解决方案3】:

      如果这是 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 注入。

      【讨论】:

      • 我得到'连接的当前状态已关闭'我必须做什么
      • Me.SqlConnection1.Open()Fill 之前和Me.SqlConnection1.Close() 之后。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多