提交自上次调用 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方法有何用处的更多相关文章

  1. C# DataTable使用方法详解--删除表数据

    在项目中常常常使用到DataTable,假设DataTable使用得当,不仅能使程序简洁有用,并且可以提高性能,达到事半功倍的效果,现对DataTable的使用技巧进行一下总结. 1.添加引用 1 u ...

  2. C#DataTable使用方法详解

    在项目中常常常使用到DataTable,假设DataTable使用得当,不仅能使程序简洁有用,并且可以提高性能,达到事半功倍的效果,现对DataTable的使用技巧进行一下总结. 1.添加引用 1 2 ...

  3. DataTable .Load 方法 (IDataReader)

    DataTable .Load 方法 (IDataReader)用来从DataReader对象中填充DataTable所需的数据 public DataTable GetAllInventory() ...

  4. DataTable.AcceptChanges的理解

    OleDbDataAdapter 怎么更新不了数据库?      String    tbName    =    ds.Tables[0].TableName;       String    te ...

  5. 遍历datatable的方法汇总

    遍历datatable的方法方法一: DataTable dt = dataSet.Tables[]; ; i < dt.Rows.Count ; i++) { string strName = ...

  6. C#基础课程之六(临时表)DataTable使用方法

    DataTable 用法:赋取值操作,及报错情况 dataTable.Columns.Add("Name"); //Columns 对象获取该集合的全部列,添加列名. 默认stri ...

  7. 反射 DataTable拓展方法 转实体对象、实体集合、JSON

    Mapper类 using System; using System.Collections.Generic; using System.Data; using System.Globalizatio ...

  8. mvc的视图中显示DataTable的方法

    mvc的视图中显示DataTable的方法: 不断的循环画出table @{ ViewBag.Title = "ShowDataTable"; } @using System.Da ...

  9. 遍历datatable的方法

    +方法一:DataTable dt = dataSet.Tables[0];for(int i = 0 ; i < dt.Rows.Count ; i++){string strName = d ...

随机推荐

  1. 理解ROS的参数

    记住每次操作之前都要在一个单独的终端中运行ros的核心. roscore rosparam命令允许你在ROS的参数服务器上操作和存储数据,参数服务器可以存储整数,浮点数,布尔类型,字典,列表.ROS使 ...

  2. css区分ie6,7,ff

    IE6能识别*,但不能识别 !important,IE7能识别*,也能识别!important;FF不能识别*,但能识别!important; 可以这样区别FF,IE7,IE6: background ...

  3. 一句代码美化你的下框之jquery.selectMM修复版(jquery.selectMM v0.9 beta 20141217)

    一句代码美化你的下框之jquery.selectMM修复版(jquery.selectMM v0.9 beta 20141217) 浏览效果: http://www.beyond630.com/jqu ...

  4. java中对于JSON 的处理 fastjson gson 系统自带的JSON 的选择

    从2月初到8月末,经历了一段痛苦的经历,现在总算感觉已经走出来了,经历那事之后 感觉对人与人之间的感情看的更透了,人也没那么浮躁了: 说实话 以前从来不知道鸟叫有多好听,现在突然觉的大自然真的很美,放 ...

  5. egret命令行编译项目时 版本不对应的问题

    egret 命令行编译项目时 如使用 egret build -e 会出现版本不对应的问题 分析原因 A,B项目 A项目使用1.8的egret引擎, B项目使用2.5引擎 但本地引擎升级至2.5.5, ...

  6. 为steghide实现字典破解功能

    steghide是一个隐写术软件,可以在图片.音频等文件里隐藏数据. 鉴于原始的steghide在解密数据时不能选择字典文件破解,于是本人就用python简单地为其实现字典破解功能. -------- ...

  7. VS2010/MFC对话框:向导对话框的创建及显示

    向导对话框的创建及显示 本节将为大家演示如何创建向导对话框. 仍然以前面的“加法计算器”的例子为基础,在其中加入向导对话框,我们可以用它来说明加法计算器的使用方法,一步一步引导用户操作,这也是比较常见 ...

  8. 基于视觉信息的网页分块算法(VIPS) - yysdsyl的专栏 - 博客频道 - CSDN.NET

    基于视觉信息的网页分块算法(VIPS) - yysdsyl的专栏 - 博客频道 - CSDN.NET 于视觉信息的网页分块算法(VIPS) 2012-07-29 15:22 1233人阅读 评论(1) ...

  9. java的常见异常与错误总结

    算术异常类:ArithmeticExecption 空指针异常类:NullPointerException 类型强制转换异常:ClassCastException 数组负下标异常:NegativeAr ...

  10. GitHub Linux下使用方法

    1. 在网站注册帐号,创建工程 test 进入工程,右下角会有一个项目仓库的地址.https://github.com/braverior/test.git 2.Linux下 安装github sud ...