在《数据集DataSet数据管理(DataAdapter查询更新数据库)》一文中提到可以使用OleDbDataAdapter对象的Update方法还可将对 DataSet 所做的更改解析回数据源,实例化OleDbDataAdapter对象时必须设置InsertCommand、 UpdateCommand或 DeleteCommand属性。那么OleDbDataAdapter对象是如何知道DataSet 数据集中哪些数据是要插入的、哪些是更改过的、而哪些又是需要删除的呢?
ADO.NET 用行状态和行版本管理表中的行。 行状态指示行的状态;行版本在修改行中存储的值时维护各个阶段的值,包括当前值、原始值和默认值。
一、行状态
(一)、RowState枚举
每个 DataRow 对象都具有 RowState 属性,您可以检查此属性来确定行的当前状态。只要该行中某一个字段发生改变,那么这一行对应的RowState属性就会发生改变。RowState是一个枚举,其中包含5个内容:
1、Unchanged
自上次调用 AcceptChanges 以来或由 DataAdapter.Fill 创建该行以来,没有进行任何更改。——原来的行!
2、Added
已将该行添加到表中,但尚未调用 AcceptChanges。——插入的新行!
3、Modified
已更改了行的某个元素。——刚被修改过的行!
4、Deleted
已从表中删除该行,并且尚未调用 AcceptChanges。——刚被删除的