日期:2014-05-20  浏览次数:20617 次

ADO.NET之Adapter对象的Update方法疑问求助。
各位都知道ADO.NET中, 一个SqlAdapter对象sqladapter0成功执行Fill()方法而填充了一个DataSet对象dataSet0后, sqladapter0对象可以使用Update()方法将dataSet0中所做的修改完美地提交到SQL Server数据库.

我虽然看了半天MSDN但是依然解决不了一个疑问:
SqlAdapter对象的SelectCommand属性, DeleteCommand属性, InsertCommand属性, 以及UpdateCommand属性, 它们各自的Connection和CommandText都是可以修改的, 不知道修改了之后还能否正确地执行Update()方法.

例如, 新声明两个SqlAdapter对象sqlAdapter1和sqlAdapter2, 将它们的SelectCommand属性的Connection设为相同, 而CommandText不同. 执行sqlAdapter1的Fill()方法填充dataSet1, 对dataSet1进行修改, 然后用sqlAdapter2来执行Update(dataSet1), 这样行么? 为什么呢?

------解决方案--------------------
C# code

DataSet ds1 = new DataSet();
DataSet ds2 = new DataSet();

SqlDataAdapter da1 = new SqlDataAdapter();
da1.SelectCommand = new SqlCommand("select * from Member", con);

SqlDataAdapter da2 = new SqlDataAdapter();
da2.SelectCommand = new SqlCommand("select * from Member1", con);

da1.Fill(ds1);
da2.Fill(ds2);

------解决方案--------------------
”更改DataSet的记录都保存在DataSet对象自己内部“
这个是正确的。每个DataRow的RowState记录状态,有几种version(Original, Current, Proposed和Default) 可以通过Item[String, DataRowVersion]来取得。
------解决方案--------------------
探讨
引用:

”更改DataSet的记录都保存在DataSet对象自己内部“
这个是正确的。每个DataRow的RowState记录状态,有几种version(Original, Current, Proposed和Default) 可以通过Item[String, DataRowVersion]来取得。

是啊, 但是DataSet会不会保存数据库连接……