C# DataSet.AcceptChanges 方法

DataSet.AcceptChanges 方法:
        提交自加载此 DataSet 或上次调用 AcceptChanges 以来对其进行的所有更改。
        DataRow 和 DataTable 类都具有 AcceptChanges 方法。 在 DataTable 级别调用 AcceptChanges,会为要调用的每个 DataRow 调用 AcceptChanges 方法。 同样,对 DataSet 调用 AcceptChanges 会导致对 DataSet 中的每个表调用 AcceptChanges。 照这样,您可在多个级别上调用该方法。 调用 DataSet 的 AcceptChanges 将使您只需调用一次,即可对所有次级对象(例如表和行)调用该方法。
        当对 DataSet 调用 AcceptChanges 时,任何仍处于编辑模式的 DataRow 对象都将成功结束其编辑。 每个 DataRow 的 RowState 属性也都更改;Added 和 Modified 行变为 Unchanged,Deleted 行被移除。

        如果 DataSet 包含 ForeignKeyConstraint 对象,则调用 AcceptChanges 方法还将导致强制实施 AcceptRejectRule。

代码如下(程序集:System.Data(在 system.data.dll 中)):

public void AcceptChanges()
{
	IntPtr intPtr;
	Bid.ScopeEnter(out intPtr, "<ds.DataRow.AcceptChanges|API> %d#\n", this.ObjectID);
	try
	{
		this.EndEdit();
		if (this.RowState != DataRowState.Detached && this.RowState != DataRowState.Deleted && this._columns.ColumnsImplementingIChangeTrackingCount > 0)
		{
			DataColumn[] columnsImplementingIChangeTracking = this._columns.ColumnsImplementingIChangeTracking;
			for (int i = 0; i < columnsImplementingIChangeTracking.Length; i++)
			{
				DataColumn column = columnsImplementingIChangeTracking[i];
				object obj = this[column];
				if (DBNull.Value != obj)
				{
					IChangeTracking changeTracking = (IChangeTracking)obj;
					if (changeTracking.IsChanged)
					{
						changeTracking.AcceptChanges();
					}
				}
			}
		}
		this._table.CommitRow(this);
	}
	finally
	{
		Bid.ScopeLeave(ref intPtr);
	}
}
时间: 2024-11-08 19:26:46

C# DataSet.AcceptChanges 方法的相关文章

C# DataSet.RejectChanges 方法

        回滚自创建 DataSet 以来或上次调用 DataSet.AcceptChanges 以来对其进行的所有更改.         调用 DataSet.RejectChanges 以针对由 DataSet 包含的所有 DataTable 对象调用 DataTable.RejectChanges 方法.         由 DataSet 包含的每个 DataRow 对象都可通过调用 DataRow.BeginEdit 方法设置为编辑模式. 在调用 DataRow.EndEdit

DataSet.AcceptChanges()后 SqlDataAdapter.Update(DataSet)时数据无法更新数据库 希望路过高人指点 谢谢了

问题描述 DataSet.AcceptChanges()后SqlDataAdapter.Update(DataSet)时数据无法更新数据库希望路过高人指点谢谢了 解决方案 解决方案二:自己顶解决方案三:有没异常出现?解决方案四:或是DataSet.HasChanges=false?解决方案五:没有任何异常解决方案六:我是你下面的并发冲突的贴,还没解决,头痛.DataSet.AcceptChanges()好像放在update的后面.解决方案七:放在update后面就起不到作用了我是GridView

C# DataSet.Clear 方法

        DataSet.Clear 方法         通过移除所有表中的所有行来清除任何数据的 DataSet. 备注         如果 DataSet 绑定到 XmlDataDocument,则调用 DataSet.Clear 或 DataTable.Clear 将引发 NotSupportedException. 为避免这种情况,请遍历每个表,逐个移除每一行. 例如,如果您使用下面的代码: DataSet ds = new DataSet(); //Skip. Populat

一个发送xml远程请求和接收xml请求结果并置入DataSet的方法

xml|请求 /// <summary>  /// 返回查询结果  /// </summary>  /// <param name="RequestString">请求的字符串</param>  /// <param name="WriteText">是否打印出表格</param>  /// <returns></returns>  public static Syste

透过vs.net数据窗体向导看Ado.net

ado|数据 透过vs.net数据窗体向导看Ado.net 郑佐2005-1-1 在csdn上经常碰到有人问一些Ado.net的问题,特别是开发信息管理系统之类的跟数据库比较密切的程序时,在数据和界面层的开发中会遇到不少常见问题,下面我们通过vs.net自带的数据窗体向导来看看能它能帮我们决绝什么问题. 一.使用向导 新建Windows 应用程序,为当前项目添加组件,选择数据窗体向导,这里名称填写为DataForm1.cs.单击打开出现数据窗体向导对话框.创建新的类型化数据集MyDataSet.

如何把已经属于一个DataSet的DataTable加到另一个DataSet中解决方法

解决方案一.参考.:http://blog.163.com/zhug_1970/blog/static/42983053201057525519/ 1.先Clone你的DataTable     DataTable   rtnTbl   =     aDt.Clone()   ; 2.复制数据     //复制     foreach(   DataRow   r   in   aDt)     {        object   []arr   =   r.ItemArray   ;     

简述DbDataAdapter.Update 方法

简述DbDataAdapter.Update 方法 当应用程序调用 Update 方法时,DbDataAdapter 根据 DataSet 中配置的索引顺序为每一行检查 RowState 属性,并迭代执行所需的 INSERT.UPDATE 或 DELETE 语句.例如,由于 DataTable 中行的排序,Update 可能先执行一个 DELETE 语句,接着执行一个 INSERT 语句,然后再执行另一个 DELETE 语句. 应注意,这些语句不是作为批处理进程执行的:每一行都是单独更新的.在必

c#中的DataSet深入探讨及RecordSet的比较

虽说ADO.NET是 ADO在.Net平台下得后继版本,但二者的区别是很大的.突出表现在ADO中的RecordSet对象和ADO.NET中的DataSet对象.RecordSet其实也是非常灵活的一个对象,微软公司推出它也是煞费苦心,如:RecordSet可以离线操作数据库教程,性能优良,效率较高等等这些都让当时的程序员为之一振.RecordSet虽然已经很复杂,但DataSet却比RecordSet复杂的多,我们知道每一DataSet往往是一个或多个DataTable 对象的集合,这些对象由数

C#操作SQLite数据库方法小结(创建,连接,插入,查询,删除等)_C#教程

本文实例讲述了C#操作SQLite数据库方法.分享给大家供大家参考,具体如下: SQLite介绍 SQLite is a software library that implements a self-contained, serverless, zero-configuration, transactional SQL database engine. SQLite是一个开源.免费的小型RDBMS(关系型数据库),能独立运行.无服务器.零配置.支持事物,用C实现,内存占用较小,支持绝大数的SQ