惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

aimingoo的专栏
aimingoo的专栏
Engineering at Meta
Engineering at Meta
有赞技术团队
有赞技术团队
博客园_首页
Apple Machine Learning Research
Apple Machine Learning Research
Vercel News
Vercel News
G
Google Developers Blog
Blog — PlanetScale
Blog — PlanetScale
IT之家
IT之家
MongoDB | Blog
MongoDB | Blog
Y
Y Combinator Blog
B
Blog
The GitHub Blog
The GitHub Blog
M
MIT News - Artificial intelligence
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Stack Overflow Blog
Stack Overflow Blog
C
Check Point Blog
Microsoft Azure Blog
Microsoft Azure Blog
D
DataBreaches.Net
I
InfoQ
Recent Announcements
Recent Announcements
阮一峰的网络日志
阮一峰的网络日志
腾讯CDC
H
Help Net Security

博客园 - 奚彧

Siverlight 导出Excel (经测试通过 Vs2010 ,silverlight5 ) 打印代码片段 部署silverlight ria 程序 备忘 刚学 silverlight 问题遇到一堆 2010 微软难道抛弃了ado.net data service openfire 安装 关于merge .net常用代码 (收藏) - 奚彧 - 博客园 碰到一个巨郁闷的情况! - 奚彧 - 博客园 关于连接池问题 删除确认按钮 - 奚彧 - 博客园 水晶报表自动插入空白行 也谈如何缩小SQL SERVER日志文件 新年第一帖,祝大家新年快乐! vs2005什么时候能出正式版 《WEB打印的相关技术分析》 web打印2 web打印 权限设置问题!(比较着急)
关于DataSet.merge 问题的答案。
奚彧 · 2006-06-13 · via 博客园 - 奚彧

代码是关于两个dataSet 分别从不同的数据源取数据,然后进行merge 后,更新其中一个数据源

cn.Open();
                SqlCommand cmd 
= new SqlCommand(sqlAllCustomers, cn);
                SqlDataAdapter adpt 
= new SqlDataAdapter(cmd);
               

                
// Add
                DataSet dsCust1 = new DataSet();
                DataSet dsCust2 
= new DataSet();
                DataSet dsTest 
= new DataSet();
                
//adpt.AcceptChangesDuringFill = false;
                
                adpt.Fill(dsCust1, 
"TABLE1");
                
//adpt.AcceptChangesDuringFill = true;
                using (SqlConnection cnTemp = new SqlConnection(cnStrTemp))
                
{
                    
//SqlConnection cnTemp = new SqlConnection(cnStrTemp);
                    cnTemp.Open();
                    SqlCommand cmdTemp 
= new SqlCommand(sqlAllCustomers, cnTemp);
                    SqlDataAdapter adptTemp 
= new SqlDataAdapter(cmdTemp);
                    adptTemp.AcceptChangesDuringFill 
= false;
                    adptTemp.Fill(dsCust2, 
"TABLE1");
                }


                
//adpt.Update(dsCust1, "TABLE1");
                dsCust1.Merge(dsCust2);
                
                
//111
                SqlCommandBuilder objBuilder = new SqlCommandBuilder(adpt);
                
                
                adpt.UpdateCommand 
= objBuilder.GetUpdateCommand();
                adpt.InsertCommand 
= objBuilder.GetInsertCommand();
                adpt.DeleteCommand 
= objBuilder.GetDeleteCommand();

                DataTable updTable 
= dsCust1.Tables[0];
                adpt.Update(updTable.Select(
null,null, DataViewRowState.Added));

其中主要是,对被合并的数据DataAdapter 属性设置为不稳定,更新的时候将取的数据改为add状态才能更新。否则DataSet 虽然merge 了其它的DataSet 表面上虽然数据已经改变了,但是其状态仍然为稳定状态,更新将失败。