从DataGridView VB中的MySQL删除一行



有人可以帮助我处理我的应用程序,我正在尝试使用vb中的datagridview从mySQL删除一行。由于某种原因,它说它找不到名为用户的列,或者只是不像应该这样做的功能。

这是代码,我知道它不整洁,有未使用的东西,但不应该影响它。

 Private Sub Button2_Click_1(sender As Object, e As EventArgs) Handles Button2.Click
    Try
        MySqlConnection.Open()
    Catch ex As Exception
    End Try
    If Me.DataGridView1.Rows.Count > 0 Then
        If Me.DataGridView1.SelectedRows.Count > 0 Then
            For Each row As DataGridViewRow In DataGridView1.Rows
                Dim selUser As String = Me.DataGridView1.CurrentRow.Index
                Dim SqlQuery As String = "DELETE FROM Report WHERE user=" & row.DataBoundItem(1).ToString
                Dim cmd As New MySqlCommand(SqlQuery, MySqlConnection)
                cmd.ExecuteNonQuery()
                Dim da As New MySqlDataAdapter("select * from Report", MySqlConnection)
                Dim ds As New DataSet
                da.Fill(ds)
                DataGridView1.DataSource = ds.Tables(0)
            Next
        End If
    End If
End Sub

编辑:现在修复它,感谢所有回答的人。

基于您遇到的错误,我认为这是您的列名称与值的串联问题。因此,您可以使用基于参数的查询来避免串联和SQL注入(您的代码中不避免)。

您的代码就是这样:

Dim SqlQuery As String = "DELETE FROM Report WHERE user= @user" 
Dim cmd As New MySqlCommand(SqlQuery, MySqlConnection)
cmd.Parameters.Add(New SqlParameter("@user", row.DataBoundItem(1).ToString)) // with SqlParameter, you can pass value

引用您的用户ID,您像

一样
... WHERE user=asd

这是一个彻头彻尾的SQL错误。

您需要它是

... WHERE user='asd'

所以,当您加入时杜:

Dim SqlQuery As String = "DELETE FROM Report WHERE user='" & row.DataBoundItem(1).ToString & "'"

或使用参数,如Akash KC所建议的。

最新更新