2016-01-20 1 views
1

это мой код для загрузки данных в моей базе данных будут моего DataGridУдаление строк DataGridView, а также в моей vb.net базы данных доступа

Private Sub Records_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 
     Dim connString As String = "Provider=Microsoft.Ace.Oledb.12.0; Data Source=" & My.Application.Info.DirectoryPath.ToString() & "\BackUp\Database3.Accdb;" 
     Dim MyConn As OleDbConnection 
     Dim da As OleDbDataAdapter 
     Dim ds As DataSet 
     Dim tables As DataTableCollection 
     Dim source1 As New BindingSource 
     MyConn = New OleDbConnection 
     MyConn.ConnectionString = connString 
     ds = New DataSet 
     tables = ds.Tables 
     da = New OleDbDataAdapter("Select * from [userinfo] ORDER BY ID", MyConn) 'Change items to your database name 
     da.Fill(ds, "userinfo") 'Change items to your database name 
     Dim cb = New OleDbCommandBuilder(da) 
     Dim view As New DataView(tables(0)) 
     source1.DataSource = view 
     DataGridView1.DataSource = view 
    End Sub 

и это моя кнопка удаления для удаления выбранной строки в DataGrid, но вся таблица удаляется вместо (я знаю эту причину я положил его удалить всю таблицу только знаю, что мой SQL работает)

Private Sub cmdDelete_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdDelete.Click 
    Dim connString As String = "Provider=Microsoft.Ace.Oledb.12.0; Data Source=" & My.Application.Info.DirectoryPath.ToString() & "\BackUp\Database3.Accdb;" 
    Dim MyConn As OleDbConnection 
    Dim da As OleDbDataAdapter 
    Dim ds As DataSet 
    Dim tables As DataTableCollection 
    Dim source1 As New BindingSource 
    Dim row As New Integer 
    Try 
     MyConn = New OleDbConnection 
     MyConn.ConnectionString = connString 
     ds = New DataSet 
     tables = (ds.Tables) 
     da = New OleDbDataAdapter("Delete * from [userinfo]", MyConn) 
     da.Fill(ds, "userinfo") 
    Catch ex As Exception 
     MessageBox.Show(ex.Message) 
    End Try 

я хочу, чтобы удалить выбранную строку в моей сетке. заблаговременно

+0

'Удалить * из [UserInfo]' удалит все в таблице. Передайте свой идентификатор, который нужно удалить. Например. 'Удалить * из [userinfo], где ID = 5' –

+0

спасибо, но как я могу узнать, какая строка в моем datagrid будет удалена? –

ответ

1

Delete * from [userinfo] удалит все в таблице. Передайте свой идентификатор, который нужно удалить. Например. Delete * from [userinfo] where ID=5

Вы можете использовать Datagridview.SelectedRows Свойство, чтобы найти выбранные строки. Пропустите индекс столбца ID, и вы получите идентификатор.

Например. "Delete * from [userinfo] where ID=" & DataGridView1.SelectedRows(0).Cells(0).Value.ToString()

Если вы разрешаете Multi-Select, переходите через строки для удаления. Также используйте parameters для передачи переменных в запросы в целях безопасности.

+1

ничего себе это работает. огромное спасибо за помощь. да, я буду использовать параметры, чтобы избежать инъекций. Большое вам спасибо за помощь. –

0

Извините, мой плохой английский. Шаг 1: Прослушайте нажмите на Datagrid

Private Sub datagridview_CellClick(sender As Object, e As DataGridViewCellEventArgs) Handles datagridview.CellClick 

Шаг 2: Получите то, что столбец нажмите

datagridview.Rows.Item(e.RowIndex).Cells(0).Value 

Шаг 3: Удаление из базы данных

Dim sqlcmd As String = "delete from [userinfo] where YourColumn = '" & datagridview.Rows.Item(e.RowIndex).Cells(0).Value & "'" 

Полностью код:

Private Sub Datagridview_CellClick(sender As Object, e As DataGridViewCellEventArgs) Handles DataGridView.CellClick 
     Try 
      Dim MyConn As OleDbConnection 
      Dim connString As String = "Provider=Microsoft.Ace.Oledb.12.0; Data Source=" & My.Application.Info.DirectoryPath.ToString() & "\BackUp\Database3.Accdb;" 
      MyConn = New OleDbConnection 
      Dim cmdstr As String = "delete * from [userinfo] where YourColumn = '" & DataGridView.Rows.Item(e.RowIndex).Cells(0).Value & "'" 
      Dim cmd As New OleDbCommand(cmdstr, MyConn) 
      MyConn.Open() 
      cmd.ExecuteNonQuery() 
      MyConn.Close() 
     Catch ex As Exception 
      MessageBox.Show(ex.Message) 
     End Try 
End Sub 
+0

еще раз спасибо. Теперь я могу добавить клик ячейки. –

0

способ для обозначения удаленных значений строк является строка исходное значение из удаленных строк таблицы:

dt is datasource of datagridview 
Dim dtDelete As DataTable = dt.GetChanges(DataRowState.Deleted) 
cmd.Parameters.AddWithValue("@GridValue", r("Gridcolumn", DataRowVersion.Original)) 

пример является SQL, но метод не является специфичным