日期:2014-05-19  浏览次数:20701 次

DateSet和远端数据库同步
本地有一个DataGridView绑定到DataSet,DataSet通过SQLadapter连到远端的数据库
要求远端数据库更新的时候,本地的DataSet也能自动更新,但不是通过Clear以后重新Fill实现,最好是只更新远端数据库更新的部分
谢谢!

------解决方案--------------------
考虑下 System.Data.SqlClient.SqlDependency 类的使用,也许可以实现,

具体没有研究过~


------解决方案--------------------
在DataSet中每一个DataRow都有状态:DataRow.RowState 属性
其状态包括:
Added 该行已添加到 DataRowCollection 中,AcceptChanges 尚未调用。
Deleted 该行已通过 DataRow 的 Delete 方法被删除。
Detached 该行已被创建,但不属于任何 DataRowCollection。DataRow 在以下情况下立即处于此状态:创建之后添加到集合中之前;或从集合中移除之后。
Modified 该行已被修改,AcceptChanges 尚未调用。
Unchanged 该行自上次调用 AcceptChanges 以来尚未更改。

对DataSet进行修改时,RowState的值也相应的发生改变
所以只要能保持RowState的值同步就能得到你想要得结果了
------解决方案--------------------
远端数据库更新后 传DataSet到本地

本地

ds.Merge(DataSet);
ds.AcceptChanges();