本人转载http://www.cnblogs.com/telnet_mike/archive/2011/08/29/2159013.html

总结:DataTable.AcceptChanges相当于将DataTable表中的所有DataRow的RowState状态 重置为Unchanged

DataTable.RejectChanges方法:回滚自该表加载以来或者上次调用AcceptChanges以来对该表进行的所有更改;并且DataTable表中的所有DataRow的RowState状态 重置为Unchanged

例子:

DataTable dataTable = ds.Tables[0];

dataTable.Rows[0][0] = 96.6669;//此时的RowState为Modied

dataTable.AcceptChanges();//此时的RowState为Unchanged

dataTable.Rows[0][0] = 7777;此时的RowState为Modied此时的RowState为Modied
 dataTable.RejectChanges();//此时的dataTable.Rows[0][0] 为96.6669,RowState为Unchanged

//最后 Update需要注意的是;防止并发性的操作。有在Update执行之前所包含的数据行有被修改,则会发生并发性操作错误。

da.Update(dataTable);

解决并发性办法:

if (dataTable.GetChanges() != null)
  {
       da.Update(dataTable.GetChanges());
  }

AcceptChanges方法会将所有改动保存到DataSet或DataTable中,使得所有行的状态都是Unchanged(没有被更改状态)

而DataAdapter.Update方法在保存数据到数据库表时做过一个检查,即检查表行是否被修改过,如果没被修改过,那么更需将不会执行任何命令,直接跳过本行,开始检查下一行,如此,一个表如果行都是Unchanged状态,那么它就不会被更新到数据库中。

所以,在更改了DataSet或DataTable后,若想调用DataAdapter.Update方法直接更新数据到数据库,那么你只需要这个Update方法,无需在此前调用一次AcceptChanges方法了。

 

Added

该行已添加到 DataRowCollection 中,AcceptChanges尚未调用。 

Deleted

该行已通过 DataRow 的 Delete 方法被删除。

Detached

该行已被创建,但不属于任何 DataRowCollection。DataRow 在以下情况下立即处于此状态:创建之后添加到集合中之前;或从集合中移除之后。 

Modified

该行已被修改,AcceptChanges 尚未调用。

Unchanged

该行自上次调用 AcceptChanges 以来尚未更改。 

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

调用AcceptChanges时,任何仍处于编辑模式的DataRow对象将成功结束其编辑。DataRowState也发生更改:所有Added和Modified行成为Unchanged;Deleted行被移除。

在您尝试使用DbDataAdapter.Update方法更新DataSet之后,通常会对DataTable调用AcceptChanges方法。

DataTable.RejectChanges方法:回滚自该表加载以来或上次调用AcceptChanges以来对该表进行的所有更改。

调用RejectChanges时,任何仍处于编辑模式的DataRow对象将取消其编辑。新行被移除。DataRowState设置为Modified或Deleted的行返回到其初始状态。

会出现对DataTable进行多次更改,但是通过调用RejectChanges方法拒绝这些更改的现象

DataRow.BeginEdit方法:对DataRow对象开始编辑操作。

使用BeginEdit方法将DataRow置于编辑模式。在此模式中,事件被临时挂起,以便允许用户在不触发验证规则的情况下对多行进行多处更改。例如,如果需要确保总数列的值等于某行中借贷列的值,则可以将每一行都置入编辑模式,以便在用户尝试提交值之前挂起对行值的验证。

BeginEdit方法在用户更改数据绑定控件的值时被隐式调用;EndEdit方法在您调用DataTable对象的 AcceptChanges方法时被隐式调用。

出自:http://blog.csdn.net/td13560142839/article/details/7468406

DataTable的AcceptChange方法为什么不能在Update之前?相关推荐

  1. C# DataTable的Select()方法不支持 != 判断

    异常描述: 用户代码未处理 System.Data.SyntaxErrorException HResult=-2146232032 Message=无法解释位置 23 的标记"!" ...

  2. DataTable的Merge方法和添加datatable到dataset

    DataTable的Merge方法 Merge方法是将两个结构相似的datatable合并成一个datatable: 实例代码:             //create table1         ...

  3. [datatable]关于在DataTable中执行DataTable.Select(“条件“)返回DataTable的解决方法

    [datatable]关于在DataTable中执行DataTable.Select("条件")返回DataTable的解决方法 参考文章: (1)[datatable]关于在Da ...

  4. 关于在DataTable中执行DataTable.Select(条件)返回DataTable的解决方法

    在实际编程工程中,常常遇到这样的情况:DataTable并不是数据库中的,或者DataTable尚未写到数据库,或者从数据库中读出的DataTable已经在本地被改动,又没有写回数据库(可能还要作其他 ...

  5. DataTable添加行的方法

    方法一: DataTable  tblDatas = new DataTable("Datas"); DataColumn dc = null; dc = tblDatas.Col ...

  6. webform计算某几列结果_利用DataTable.Compute等方法和属性做各种统计(某一列的总和sum、不重复的某列记录数distinct)...

    对应sql语句 select UserID, UserName, UserMoney from Users 从数据库里利用SqlDataAdapter读取出DataSet的方法不写了,这个好简单,写统 ...

  7. 【hibernate merge】session1.merge(T entity)方法的含义和update方法的区别

    注意:  MERGE语句是SQL语句的一种.在SQL Server.Oracle数据库中可用,MySQL.PostgreSQL中不可用. 1>session1.merge(T entity) 合 ...

  8. DataTable数据过滤方法

    转自:https://blog.csdn.net/u011981242/article/details/52419460 筛选DataTable中的数据,使用 Select()方法,筛选结果可以保存到 ...

  9. c# datatable数据合并方法

    合并方法1:用Rows.Add方法 DataTable1.Rows[i].ItemArray.CopyTo(obj, 0);newDataTable.Rows.Add(obj); 合并方法2:用Dat ...

最新文章

  1. 如何系统的学习单片机?
  2. 阿里员工吐槽:后悔接这侮辱性的offer
  3. 这两天用到的Jmeter录制
  4. BroadcastReceiver的思考(3)
  5. int 为什么是2147483647_2147483647代表什么
  6. WPF基础知识学习笔记(一)XAML基础
  7. linux中nodejs后台运行工具forever
  8. 说说我在项目中为什么不用实体框架,如果说我在诋毁你所爱的EF,请进来.
  9. c语言 socket 断开自动连接,如何优雅地断开TCP连接?
  10. vscode svn插件使用_我最终还是选择了VS code!
  11. shell 脚本空行造成 :not found make.sh:
  12. java编译不报错但运行啥都没_java编译时与运行时概念与实例详解
  13. Spring的Bean属性依赖注入
  14. PowerDesigner导出SQL脚本运行注释出现乱码问题
  15. RPi 2B Raspbian system install
  16. mysql查询更新删除_mysql查询,更新(text类型),删除关联操作
  17. 由梵歌企划策划承办的方正科技总裁签售会(武汉站)圆满结束!
  18. 深入分析AIDL原理
  19. 思维方式-《策略思维》书中的精髓:生活工作中博弈无处不在,理解博弈论、善用策略思维,能帮助我们做出更好的决策。
  20. 组合优化问题MATLAB程序,组合优化问题(一).ppt

热门文章

  1. thymeleaf+layui加载页面渲染时,TemplateProcessingException: Could not parse as expression:
  2. python课堂笔记手抄图片_超简单又漂亮的手抄报图片
  3. matlab神经模糊推理系统
  4. 【新星计划】Matlab实现数据导出
  5. fluent计算进出口的流量差
  6. linux 手动解压or增加or更新 jar 包中文件
  7. c语言指数pow,C语言中的指数函数pow()问题
  8. 显示部分x_Linux 黑话解释:什么是显示服务器,用来做什么? | Linux 中国
  9. UML建模--序列图建模技巧
  10. NumberUtils源码分析