DataTable.AcceptChanges()

DataTable.AcceptChanges()个人总结:DataTable.AcceptChanges()貌似是在2.0版本才提出的,;当在你对数据进行修改、删除、增添,这些方法是面向对象状态操作的,是可以进行回滚的,意思就是说我update后如果想恢复数据这是可以的 ,但是一旦DataTable.AcceptChanges()来提交,则是彻底的修改了数据并提交到了数据库,是不可逆的;如RemoveAt()是面向普通集合操作的(不可

DataTable.AcceptChanges()

 

个人总结:DataTable.AcceptChanges()貌似是在2.0版本才提出的,; 当在你对数据进行修改、删除、增添 ,这些方法是面向对象状态操作的,是可以进行回滚的,意思就是说我update后如果想恢复数据这是可以的  ,但是一旦DataTable.AcceptChanges() 来提交 ,则是彻底的修改了数据并提交到了数据库,是不可逆的;如RemoveAt()是面向普通集合操作的(不可以回滚,等价于先Delete()后AcceptChanges())

 

 

 

 

提交自上次调用 AcceptChanges 以来对该表进行的所有更改。

调用 AcceptChanges 后,再用 DataAdapter.Update() 不会有任何新数据被更新到数据库中。那……那它有什么用处呢?

以前的做法:

Fill –> Edit –>Update –> 重新Fill –> Edit –> Update –> ……

“更新了数据当然要重新获取啦!”,再次更新后,再再次重新获取。

现在的做法:

Fill –> Edit –> Update –> AcceptChanges –> Edit –> Update –> AcceptChanges –> Edit –> Update –> ……

开始获取一次就好了,反正你更新了数据后再获取的不就是你刚才更新的吗,干嘛还要获取一遍呢?

AcceptChanges 在 Update 后 !

—————————————–丑陋分割线————————————————————-

AcceptChanges()和RejectChanges() http://www.cnblogs.com/perfect/archive/2007/08/06/844634.html

最近在园子里看了几篇相关的文章,总结了一下(还请多多指正):
Delete()是面向对象状态操作的(可以回滚);RemoveAt()是面向普通集合操作的(不可以回滚,等价于先Delete()后AcceptChanges())

DataTable.AcceptChanges方法
提交自上次调用 AcceptChanges 以来对该表进行的所有更改。调用 AcceptChanges 时,任何仍处于编辑模式的 DataRow 对象将成功结束其编辑。DataRowState 也会随之更改:所有状态为 Added 和 Modified 的行的状态都变为 Unchanged;状态为 Deleted 的行则被移除。
在您尝试使用 DbDataAdapter.Update 方法更新 DataSet 之后,通常会对 DataTable 调用 AcceptChanges 方法。 DataTable.RejectChanges方法
回滚自该表加载以来或上次调用 AcceptChanges 以来对该表进行的所有更改。
调用 RejectChanges 时,任何仍处于编辑模式的 DataRow 对象将取消其编辑。新行被移除。DataRowState 设置为 Modified 或 Deleted 的行返回到其初始状态。 使用 Delete 方法后,RowState 变成“已删除”。在您调用 AcceptChanges 之前,它一直保持“已删除”。可通过调用 RejectChanges 取消删除行。 而RemoveAt表示当移除行时,该行中的所有数据都将丢失。您还可以调用 DataRow 类的 Delete 方法来标记某行以供移除。调用 RemoveAt 等同于先调用 Delete 再调用 AcceptChanges。 也就是说使用Delete()方法删除行后是可以回滚的,而使用RemoveAt(int)方法是不能回滚的。 总结:
1、Delete()之前接收了AcceptChanges()后,都只加上删除标记,以后再次接受了AcceptChanges()后才真正删除,否则没有再次接受AcceptChanges()遇到RejectChanges()可以回滚
2、Delete()之前没有接收AcceptChanges(),之后立即接受AcceptChanges(),也真正删除
3、Delete()之前没有接收AcceptChanges(),之后也没立即接受AcceptChanges(),会彻底删除:因为没有必要回滚

今天的文章DataTable.AcceptChanges()分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/33444.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注