使用以下语法从数据表中删除行:
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)没有更新,应该删除的行仍然存在于数据库中。
一些建议?
三江源
答案 0 :(得分:0)
好的,我自己解决了问题。
错误发生在:
IWDataSet.Tables("MYTABLE").AcceptChanges()
方法AcceptChanges()在删除它们之后以永久方式从表中删除行,因此它等效于执行Remove()方法。在更新数据库(.sdf文件)时,以前删除的行不再可用于DataAdapter以从.sdf文件中删除。
以下是正确的代码:
删除行:
IWDataSet.Tables("[MYTABLE]").Rows.Find(MYKEY).Delete()
更新数据库(.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()