Удаление записи из набора данных и сервера SQL
Я пытаюсь удалить запись из DataTable, а затем обновить базу данных, к которой она прикреплена.
Я удаляю строку моего DataGridView, а затем обновляю свой набор данных, используя:
Me.Tab2_DGVDuty.Rows.RemoveAt(Me.Tab2_DGVDuty.CurrentRow.Index)
ds1.AcceptChanges()
Tab2_DGVDuty.Refresh()
Затем я вызываю мой adapter.update, как показано ниже:
Dim adapter As New SqlDataAdapter
Dim cmdBuilder As New SqlCommandBuilder(adapter)
Dim DutyDetails As String = "SELECT * from MyTable"
adapter.SelectCommand = New SqlCommand(DutyDetails, SQLConn)
adapter.UpdateCommand = cmdBuilder.GetUpdateCommand
adapter.DeleteCommand = cmdBuilder.GetDeleteCommand
Dim cb As SqlCommandBuilder = New SqlCommandBuilder(adapter)
adapter.Update(ds1.Tables("DT_Table"))
Но когда я перезагружаю данные, моя запись все еще там. Если я изменяю значение и обновляю это работает нормально, но по какой-то причине удаление не происходит.
Любая помощь высоко ценится.
РЕДАКТИРОВАТЬ: ОК, я изменил свое удаление на следующее, как предложено ниже:
ds1.Tables("DT_Table").Rows(Tab2_DGVDuty.CurrentRow.Index).Delete()
Это прикреплено к кнопке, оно удаляет нормально в первый раз, но при втором нажатии для удаления другой записи ничего не происходит. Если я использую
ds1.AcceptChanges()
тогда работает нормально. Однако, если я использую вышеупомянутое, то мой код ниже ничего не удаляет из базы данных:
Dim adapter As New SqlDataAdapter
Dim cmdBuilder As New SqlCommandBuilder(adapter)
Dim DutyDetails As String = "SELECT * from MyTable"
adapter.SelectCommand = New SqlCommand(DutyDetails, SQLConn)
adapter.UpdateCommand = cmdBuilder.GetUpdateCommand
adapter.DeleteCommand = cmdBuilder.GetDeleteCommand
Dim cb As SqlCommandBuilder = New SqlCommandBuilder(adapter)
adapter.Update(ds1.Tables("DT_Table"))
1 ответ
Вы не хотите удалять
DataRow
отDataTable
хочешьDelete
Этоds1.Tables("DT_Table").Rows(Tab2_DGVDuty.CurrentRow.Index).Delete()
Не звони
ds1.AcceptChanges()
после того какUpdate
не будет признавать, что этот ряд изменился больше тогда, потому что он изменит этоRowState
вUnchanged
,DataAdapter.Update
звонкиAcceptChanges
как последний шаг неявно, а не вы.Я предполагаю что
Tab2_DGVDuty
этоDataGridView
а неDataTable
Я учел это выше.