我有這個功能工作正確。正確工作的部分是我可以在DataGridView上選擇一行的位置,使用「Delete Row」按鈕調用此函數,然後它將從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 2013-03-27 17:16:19
不,只是改變代碼來反映這一事實。我將更新答案 – Steve 2013-03-27 17:17:44
您的For循環似乎不正確。我有「對於Datagridview1.selectedrows中的每個selectedRow」... ... – MaylorTaylor 2013-03-27 17:21:36