У меня есть эта функция, работающая наполовину справа. Часть, которая работает правильно, я могу выбрать строку в DataGridView, вызвать эту функцию с помощью кнопки «Удалить строку», а затем она удалит строку из DataGridView .... Однако она не удаляет строку в базе данных.Удалить строку из базы данных с помощью OleDb
Может ли кто-нибудь помочь мне с удалением строки из БД с помощью OleDb?
Function DeleteTableRow()
Dim TaxConnStr As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ConfigurationManager.AppSettings("Database")
Dim dbConnection = New OleDbConnection(TaxConnStr)
Try
Dim dbCommand As OleDbCommand = New OleDbCommand
Dim rdr2 As OleDbDataReader
Dim selectedRow = DataGridView1.SelectedRows
dbCommand.CommandText = "DELETE FROM UserCriteria WHERE RowID =" & selectedRow
If dbConnection.State = ConnectionState.Closed Then
dbConnection.Open()
End If
dbCommand.Connection = dbConnection
rdr2 = dbCommand.ExecuteReader
dbCommand.ExecuteNonQuery()
rdr2.Close()
'''Must select entire row to delete
'DataGridView1.Rows.Remove(DataGridView1.Rows(DataGridView1.SelectedCells.Item(0).RowIndex))
'''allows you to select on cell in the row to delete entire row
For Each oneCell As DataGridViewCell In DataGridView1.SelectedCells
If oneCell.Selected Then
DataGridView1.Rows.RemoveAt(oneCell.RowIndex)
End If
Next
Catch ex As Exception
MsgBox(ex.Message)
Finally
dbConnection.Close()
End Try
End Function
Исправления --- имя столбца в базе данных - это просто «ID». Кроме того, в DataGridView у меня этот столбец (столбец «ID») установлен в скрытый. это проблема? – MaylorTaylor
Нет, просто измените код, чтобы отразить этот факт. Я обновлю ответ – Steve
Ваш цикл For кажется неправильным. У меня есть «Для каждого selectedRow в Datagridview1.selectedrows» ... – MaylorTaylor