从datagridview vb中的mysql中删除一行

时间:2017-02-22 20:13:39

标签: mysql vb.net winforms

有人可以帮我处理我的应用程序,我试图使用vb中的datagridview从mysql中删除一行。由于某种原因,它要么说它找不到名为user的列,要么就像它应该做的那样起作用。

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

 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

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

2 个答案:

答案 0 :(得分:0)

根据您的错误,我认为您的列名与值的串联问题。因此,您可以使用基于参数的查询来避免连接和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

答案 1 :(得分:0)

引用你的用户ID,就像

一样
... WHERE user=asd

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

你需要它

... WHERE user='asd'

所以,当你连接时,它就是它:

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

或使用参数化,正如Akash KC所建议的那样。