繁体   English   中英

VB.Net删除DataGridView MySql中的所选行

[英]VB.Net Delete Selected Row in DataGridView MySql

这是我使用的代码。 出现消息框,但是当我选择“是”时,不会在datagridview和数据库中删除所选行。

Private Sub Delete2_Click_1(sender As Object, e As EventArgs) Handles Delete2.Click
        MySqlConn = New MySqlConnection
        MySqlConn.ConnectionString = "server=127.0.0.1;userid=root;password=;database=equipment"

        Try
            If Me.DataGridView2.Rows.Count > 0 Then
                If Me.DataGridView2.SelectedRows.Count > 0 Then
                    Dim intStdID As Char = Me.DataGridView2.SelectedRows(0).Cells("asset_code").Value
                    'open connection
                    If Not MySqlConn.State = ConnectionState.Open Then
                        MySqlConn.Open()
                    End If

                    'delete data
                    Dim cmd As New MySqlCommand
                    cmd.Connection = MySqlConn
                    cmd.CommandText = "DELETE * FROM equipment.equipment" & intStdID
                    Dim res As DialogResult
                    res = MsgBox("Are you sure you want to DELETE the selected Row?", MessageBoxButtons.YesNo)
                    If res = Windows.Forms.DialogResult.Yes Then
                        cmd.ExecuteNonQuery()

                    Else : Exit Sub
                    End If
                    'refresh data
                    Load_table()

                    'close connection
                    MySqlConn.Close()
                End If
            End If
        Catch ex As MySqlException
        End Try

看这行:

 cmd.CommandText = "DELETE * FROM equipment.equipment" & intStdID

它尝试将ID值从选定的单元格追加到SQL语句。 但是,这似乎只是 ID值。 您还需要查询的WHERE ID=部分。

此外,它以错误的方式在查询中使用此ID值。 使用字符串连接在查询中包含数据永远是不可能的。 必须使用参数化查询。

下面的代码演示了此方法以及该方法的其他几种更好的模式,但有一些警告,我不得不猜测是数据库中的某些名称和类型。

Private Sub Delete2_Click_1(sender As Object, e As EventArgs) Handles Delete2.Click
    If Me.DataGridView2.Rows.Count = 0 OrElse Me.DataGridView2.SelectedRows.Count = 0 Then
        Exit Sub
    End If

    Dim res As DialogResult = MsgBox("Are you sure you want to DELETE the selected Row?", MessageBoxButtons.YesNo)
    If res <> DialogResult.Yes Then Exit Sub

    Dim intStdID As Char = Me.DataGridView2.SelectedRows(0).Cells("asset_code").Value
    Dim SQL as String = "DELETE * FROM equipment.equipment WHERE equipment.StdID= @AssetCode"

    Using con As New MySqlConnection("server=127.0.0.1;userid=root;password=;database=equipment"), _
          cmd As New MySqlCommand(SQL, con)

        cmd.Parameters.Add("@AssetCode", MySqlDbType.VarChar, 1).Value = intStdID            
        con.Open()
        cmd.ExecuteNonQuery()
    End Using
    Load_table()
End Sub

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM