说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

如何合并两个dataset

编辑:说三道四文库 发布时间:2017-10-21 11:22
HTML文档下载 WORD文档下载 PDF文档下载
用什么方法可以把获取的两个dataset的数据合成一个表?
只是简单的把第二个表的数据加在第一个后面就行了
Dataset.Merge(Dataset1)
用Merge方法就可以了。
将此 DataSet 与指定的 DataSet 合并。

[Visual Basic]
<Serializable>
Overloads Public Sub Merge( _
   ByVal dataSet As DataSet _
)
[C#]
[Serializable]
public void Merge(
   DataSet dataSet
);
[C++]
[Serializable]
public: void Merge(
   DataSet* dataSet
);
[JScript]
public
   Serializable
function Merge(
   dataSet : DataSet
);
参数
dataSet 
其数据和架构将被合并的 DataSet。 
异常
异常类型 条件 
ConstraintException 无法启用一个或多个约束。 
ArgumentNullException dataSet 为空引用(Visual Basic 中为 Nothing)。 

备注
Merge 方法用于合并架构大致相似的两个 DataSet 对象。合并在客户端应用程序上通常用于将数据源中最近的更改合并到现有的 DataSet 中。这使客户端应用程序能够拥有用数据源中的最新数据刷新的 DataSet。

通常在一系列过程的末尾调用 Merge 方法,这些过程涉及验证更改、消除错误、使用更改更新数据源并最后刷新现有的 DataSet。

在客户端应用程序上,通常有这样一个按钮,用户可以单击它来收集已更改的数据并对其进行验证,然后将其发送回中间层组件。在这种情况下,将首先调用 GetChanges 方法。该方法返回另一个为验证和合并而优化的 DataSet。第二个 DataSet 对象只包含已更改的 DataTable 和 DataRow 对象,结果产生初始 DataSet 的子集。该子集通常较小,因此可以更有效率地传递回中间层组件。然后,中间层组件将通过存储过程使用更改更新初始数据源。然后,中间层可以发送回一个新的 DataSet,其中包含数据源中的初始数据和最新数据(通过再次运行初始查询);或者它可以发送回包含从数据源对其进行的所有更改的子集。(例如,如果数据源自动创建唯一主键值,则可以将这些值传播回客户端应用程序。)在哪一种情况下都可以使用 Merge 方法将返回的 DataSet 合并回客户端应用程序的初始 DataSet。

为了便于解释 Merge 方法,我们使用“目标”(target) 表示当前的 DataSet,使用“源”(source) 表示第二个(参数)DataSet。如此命名目标 DataSet 是因为它是操作(合并)针对的对象。第二个 DataSet 被称为“源”是因为它包含的信息不更改,而是被合并到当前的 DataSet 中。

当调用 Merge 方法时,由于架构可能已更改,因此对两个 DataSet 对象的架构进行比较。例如,在企业对企业的情况下,可能已经通过自动过程将新列添加到 XML 架构中。如果源 DataSet 包含目标中缺少的架构元素(已添加的 DataColumn 对象),则可以通过将 missingSchemaAction 参数设置为 MissingSchemaAction.Add 将该架构元素添加到目标中。在这种情况下,合并的 DataSet 将包含已添加的架构和数据。

合并架构之后合并数据。

将新的源 DataSet 合并到目标中时,任何 DataRowState 值为 Unchanged、Modified 或 Deleted 的源行都与具有相同主键值的目标行匹配。DataRowState 值为 New 的源行同包含与新源行相同的主键值的新目标行匹配。

合并过程中将禁用约束。如果在合并结束时无法启用任何约束,则会在禁用约束的同时生成 ConstraintException 并保留合并的数据。这种情况下,EnforceConstraints 属性将设置为 false,并且所有无效行都会标记为出错。在试图将 EnforceConstraints 属性重置为 true 之前,必须消除这些错误。

示例
[C#] 
private void DemonstrateMerge() {
   // Create a DataSet with one table, two columns, and three rows.
   DataSet ds = new DataSet("myDataSet");
   DataTable t = new DataTable("Items");
   DataColumn c1 = new DataColumn("id", Type.GetType("System.Int32"));
   c1.AutoIncrement=true;
   DataColumn c2 = new DataColumn("Item", Type.GetType("System.Int32"));
   // DataColumn array to set primary key.
   DataColumn[] keyCol= new DataColumn[1];
   DataRow r;
   // Create variable for temporary DataSet. 
   DataSet xSet;
   // Add columns to table, and table to DataSet.   
   t.Columns.Add(c1);
   t.Columns.Add(c2);
   ds.Tables.Add(t);
   // Set primary key column.
   keyCol[0]= c1;
   t.PrimaryKey=keyCol;
   // Add ten rows.
   for(int i = 0; i <10;i++){
      r=t.NewRow();
      r["Item"]= i;
      t.Rows.Add(r);
   }
   // Accept changes.
   ds.AcceptChanges();
   PrintValues(ds, "Original values");
   // Change two row values.
   t.Rows[0]["Item"]= 50;
   t.Rows[1]["Item"]= 111;
   // Add one row.
   r=t.NewRow();
   r["Item"]=74;
   t.Rows.Add(r);
   // Insert code for error checking. Here we set one row in error.
   t.Rows[1].RowError= "over 100";
   PrintValues(ds, "Modified and New Values");
   // If the table has changes or errors, create a subset DataSet.
   if(ds.HasChanges(DataRowState.Modified | DataRowState.Added)& ds.HasErrors){
      // Use GetChanges to extract subset.
      xSet = ds.GetChanges(DataRowState.Modified|DataRowState.Added);
      PrintValues(xSet, "Subset values");
      // Insert code to reconcile errors. In this case, we'll reject changes.
      foreach(DataTable xTable in xSet.Tables){
         if (xTable.HasErrors){
            foreach(DataRow xRow in xTable.Rows){
            //Console.WriteLine(xRow["Item"]);
                 if((int)xRow["Item",DataRowVersion.Current ]> 100){
                  xRow.RejectChanges();
                  xRow.ClearErrors();
               }
            }
         }
      }
      PrintValues(xSet, "Reconciled subset values");
      // Merge changes back to first DataSet.
      ds.Merge(xSet);
      PrintValues(ds, "Merged Values");
   }
}

private void PrintValues(DataSet ds, string label){
   Console.WriteLine("\n" + label);
   foreach(DataTable t in ds.Tables){
      Console.WriteLine("TableName: " + t.TableName);
      foreach(DataRow r in t.Rows){
         foreach(DataColumn c in t.Columns){
            Console.Write("\t " + r[c] );
         }
         Console.WriteLine();
      }
   }
}
将光标限制在某区域-Delphi资料 将文件放入回收站-Delphi资料 禁止用户切换任务-Delphi资料 控制面板大全-Delphi资料 控 制 系 统 菜 单-Delphi资料 拦截消息处理过程-Delphi资料 利用API函数开发DELPHI程序三例 利用Hook技术实现键盘监控-Delphi资料 利用浏览窗口 DragDrop 任意文件-Delphi资料 利用未公开函数实现Shell操作监视-Delphi资料 妙用Delphi的标识号 判断Windows类型和版本-Delphi资料 判断一个程序是否dos版本:-Delphi资料 屏蔽系统按键-Delphi资料 屏幕抓字技术揭密(转载)-Delphi资料 启动控制面板-Delphi资料 取得系统所有窗口的方法-Delphi资料 全部窗体可使用鼠标点中移动-Delphi资料 让图像旋转-Delphi资料 热启动控制-Delphi资料 如果隐藏和显示Windows的任务条-Delphi资料 如何把文件删除到回收站中-Delphi资料 如何从任务栏上隐藏应用程序的按纽?-Delphi资料 如何得到Windows 的temp路径-Delphi资料 如何得到WINDOWS的SYSTEM路径-Delphi资料 如何得到上一个激活的组件-Delphi资料 如何得到系统目录-Delphi资料 如何得到执行程序的当前路径-Delphi资料 如何访问一个进程的内存空间-Delphi资料 如何关CD机的门?-Delphi资料 如何关闭外部开启的应用程序-Delphi资料 求一时间函数 用VC做一个IE的ActiveX,要求能通过Internet访问数据库,该怎么弄啊?有例程吗? JDBC如何访问Oracle存储过程返回的结果集? 虚心请教个简单问题!怎样根据数据库读出的的代码(DM),动态匹配出代码意义(DMYY)?急!!! 我有简体的程序代码,也装了繁体98,想转换为繁体版,请帮我提供解决方案把 请问有哪位高人配置过JBuilder编译javabean 怎么读出上传的文件内容,(根据文件路径)? 在Win2003里用属于Administrator用户组但不是Administrator的用户建一个ADSL上网连接,为什么这个用户自己无权使用呢?怎么才能使它有使 设备文本重画的问题 求 <<ibm pc 匯編語言程序設計>>一書, 送400分. 下载文件时不提示我? JB中写代码时光标的问题 vbscript,如何在客户判断EMAIL正确格试! 西风到底怎么样啊? 众为高手好,小弟下载了个电影,打开时有声音,但是显示不了 ACCESS可以用中文作为表名,但不能读取表? 从0-22 抽出 5个数 这几个数不能相同。怎么版。啊。。 求救! 在窗体中如何对ACCESS数据库中的表格进行访问?--在线求助!! 怎么在程序中使用另一个目录下的class?在线等 如何在datagrid绑定后修改datagrid 的header.text的值? 谁知道在PB8下为什么树型控件无法正确显示汉字,急,马上就给分,在线等候! delphi的系统分析员请进来。 关于输入法的聚焦问题!! 病毒通过附件传播的问题 ORACLE不能自动启动的问题 关于提取字符串的问题 indy 9控件的安装,有没有发布版下载! 菜鸟问题,我这个触发器错在哪里? 郁闷!!!帮帮先!!! 急,表怎么添加不了数据??? 怎样实现MDI框架下,桌面窗体总在所有窗体的最后面? 关于html登录表单 想创业的进来看看! 郁闷!!帮忙先 “上网上了一半,突然间网页全部自动关闭?” 急死了,这是怎么回事? delphi的系统分析员请进来。 许多网页底部都有Disclaimer,请问这个词该怎么理解?谢谢! asp连接 orale进行分页时老出错? 请教:如何从XML文件中动态读出对应的信息?万分感谢 delphi的系统分析员请进来。 在Win2k Server中,如何判断当前用户(或应用)是否有SE_SHUTDOWN_NAME权限?在线... 表单连动怎么写呢?用asp。 一个简单问题,却快让我发疯了,请大家帮忙看看 各位大哥又有问题请教了,现在看到很多网页做成左右2个FrameSet,当中通过一个类似箭头的图片,当点击后,可以缩进一个FrameSet,请问大哥 简单问题求教 急!!!如何在MSHFlesGrid中实现Tab键的功能? Tomcat连接数超过最大连接数时,需重启tomcat,如何解决? 关于XP中测试先行的具体实践办法 重载TCustomComboBox如何使list中选择的内容经过我修改后再填入edit 人因梦想而伟大 你的微笑带走了我的心 用英语怎么翻译 "退”的反义词是什么? 一个等腰三角形的一边是5厘米,另一边是7厘米,这个三角形的周长为 不耻下问的故事 微笑 由心而生 翻译成英文 come,short,fast的反义词 不耻下问小故事急用 神级人物呢? 退的反义词是近吗 怎么防溺水 为科学奉献终身的名人有哪些短点 full heavy fast 的反义词 ( ) ( come) have please.用适当形式填空 胜多欺少(词语接龙) 退的反义词是什么 用负荆请罪、千方百计、攻无不克造句 那时,我总是不由得想起那位“耳聋”的老人 改为双重否定句怎么改啊? My brother has a good (p ) for coming vacation while和as的区别( )modeling business is by no means easy to get into,the good models will always be in demand.A.while B.as 为什么选A而不选B呢? 已知△ABC的两边AB、AC的长是关于x的一元二次方程X²-(2m+3)x+m²+3m+2=0的两个实数根,且第三边长为5.(1)是否存在实数m,使△ABC是以AB为底边的等腰三角形?若存在,求出m的值;若不存在,说明 八年级上册数学习题11.18题 急.在△ABC中,AB=2,BC=4,△ABC的高AD与CE的比是多少?(提示:利用三角形的面积公式.) 人琴俱亡中 你认为王子猷 月余亦卒 的原因是. 初二数学求大神神神. 合作的反义词是什么 形象表达的句子,如:快刀斩乱麻 那时,我总是想起那位“耳聋”的老人改写成反问句 ( )的欢笑 合作的反义词 while与as的区别 已知:在平行四边形ABCD中,对角线AC、BD相交于点O,点P是平行四边形ABCD外一点,且PA⊥PC,PB⊥PD,垂足为P.求证:四边形ABCD为矩形! LOVE YOU'S GOOD 什么意思 as 和 while 的区别... 澳门特首第一任是谁 you love a good 这道题目怎么写?体积是多少? put an end to和 bring an end to有什么区别? Good love for you中文是什么? 急需“做一个热爱生活热爱工作的人”的演讲稿 集体的反义词是什么? 用配方法把解析式y=1+4x-2x2改写成y=a(x+m)2+k的形式 小偷的英语 团队的反义词 英语翻译每个人都喜欢这本杂志吗?【弄错了】 小偷英语怎么写 几队反义词登上的反义词是?震惊的反义词是 配合的反义词是什么 小偷的英文单词是什么? 组织的反义词 联合的反义词是什么 如何看待“儿孙自有儿孙福”拜托各位大神有的人给儿子买了房,这样的人有,有的人说儿孙自有儿孙福,意思是你自儿奔吧,能奔个样是个什么样 若a:b:c=3:4:5,则5a+2b-c除以5a-2b+c=什么? 协作的反义词可不可以是竞争?求急!3分钟内 若2√﹙2-a﹚/6与6√﹙2a-3﹚/4 是同类二次根式,则a的值是多少?3Q 易语言随机数每次都取随机数 数学题1+1=1 18+6=1 3+1=41+1=1 18+6=1 3+1=4请问为什么? 设ab是两个数 规定a△b=4b-(a+b)÷2 求3△(4△6)拜托各位了 3Q 关于易语言随机数标签1的标题 在随机的时间内加1 比如:我想让一个标签的标题随机的时间内加1个单位的数字 一道数学题,第18题…… 关于献身科学的名言警句 易语言 判断随机数想要的效果是如:先取一个随机数 1-10 这个数如果不等于9就重新取随机数,一直到取到9为止. My________(brother)name is Li Hong.(线上写什么) 中央财政采取多种措施 加快拨付农业综斯诺克国锦赛丁俊晖晋级次轮 手握赛点跨境电商游走政策灰色地带 诸多问题仍“永康车王”陈宏辉集资诈骗14亿 被能源局施压国网加码治顽疾 规划滞后等浙江释疑吴英资产处置:困难重重 已追托雷斯被\"激活\"进绝杀球 穆里尼永康车王非法集资近10亿判无期 曾坐前三季全国物流总额145.7万亿元 几内亚总统为中国房产开发项目奠基国际新闻早报:俄罗斯外长说俄乌贸易关中国核潜艇露面,战略威慑力更强“金发女孩”父母否认卖女儿 因没钱放阿联酋中国商会为中资企业办讲座澳媒评论称中国买家推高悉尼房价四分之11年来最强风暴袭英国 海陆空交通大奥巴马巨资医保网站故障频出 副总裁被中断30年 美国与新西兰恢复联合军演迈克尔杰克逊私人医生刑满出狱 欲再获美国在欧反导基地开建 防范伊朗导弹引猫鼬欲擒毒蛇当美食 毒蛇凌厉反击赢得《爸爸回来了》周四周五连播菜鸟级23亿美元杭州人“自助”去巴西看世界杯最省最省沪杭甬高速改建后的高架为什么只有四车《短暂飞行》如何与世界和解?老鸟级手机贴近银行卡 交易记录看光光?爱马仕高管跳槽到杭州打工要把80块钱6岁小孩咳大半年 元凶竟然是毛绒玩具杭州科技职业技术学院今年招生改革表姐表姐夫当庭翻供称待小瞿像亲生女儿没有一户姓“茅”的为啥会叫“茅家埠”杭州市区天气预报有机会赢取互联网电视大奖木版上的仲夏梦基金点评30℃左右的清凉雨天只剩下没几天了始终坚持品质不降建筑标准10天换了3份工,做半天就走人跟她一杭州青少年活动中心暑假有丰富活动
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘