2014-10-21 3 views
0

Удаление строки из DataTable с помощью следующего синтаксиса:Удаление строки из DataTable, то база данных не обновляется

Dim expression As String = "FULLTAG = 'ITEMTAG'" 
Dim row() As DataRow = MYDataSet.Tables("MYTABLE").Select(expression) 
Dim row2 As DataRow = row(0) 
row2.Delete() 
IWDataSet.Tables("MYTABLE").AcceptChanges() 

Затем пытается обновить соответствующий файл базы данных (SDF-) со следующим:

Dim MYAdapter As New SqlCeDataAdapter("SELECT * FROM MYTABLE", ConnStr) 
SqlCommBuilder.DataAdapter = MYAdapter 
MYAdapter.UpdateCommand = SqlCommBuilder.GetUpdateCommand 
MYAdapter.Update(MYDataSet, "MYTABLE") 
IWDataSet.AcceptChanges() 

Соответствующая база данных (.sdf) не обновляется, строка, которая должна быть удалена, все еще присутствует в базе данных.

Некоторые предложения?

Thankyou

ответ

0

ОК, проблема решена мной.

ошибка была в:

IWDataSet.Tables("MYTABLE").AcceptChanges() 

Метод AcceptChanges() удаляет на постоянной основе строк из таблицы после их удаления, так что это эквивалентно выполнить метод Remove(). Во время обновления базы данных (файл .sdf) ранее удаленные строки больше не доступны для DataAdapter для удаления из файла .sdf.

Ниже приводится правильный код:

Удаление строки:

IWDataSet.Tables("[MYTABLE]").Rows.Find(MYKEY).Delete() 

Обновление databae (SDF-файл):

Dim MYAdapter As New SqlCeDataAdapter("SELECT * FROM MYTABLE", ConnStr) 
SqlCommBuilder.DataAdapter = MYAdapter 
MYAdapter.UpdateCommand = SqlCommBuilder.GetUpdateCommand 
MYAdapter.InsertCommand = SqlCommBuilder.GetInsertCommand 
MYAdapter.DeleteCommand = SqlCommBuilder.GetDeleteCommand 
MYAdapter.Update(MYDataSet, "MYTABLE") 
IWDataSet.AcceptChanges() 
Смежные вопросы