关于DataSet,DataTable,DataRow的理解
2008-12-24 14:11
429 查看
刚开始的时候从书上得知DataSet,DataTable都是属于引用类型,虽然书说有例子,但是还是未能真正理解,直至最近的一次开发,对其使用的多了,终于有所明白,为了以后紧记,所以记了下来.
何为引用户类型呢,用字真的好难说明,但我举个例,就好容易明白了.
例:我要从一个叫DA1的DataSet中复制数据到到DA2,从我们以前的开发中,最常做的,当然就是将DA1赋值给DA2(如下)
DataSet DA2=new DataSet();
DA2=DA1
但这种做法在C#里面的引用类型中使用是达不到相要的效果的(即DA2和DA1是两个独立的对象,且值相同),虽然程序并不出错,DA2中的数据也的确是DA1中的数据,但性质就完全不同了,这里DA2和DA1应该理解为是同一个东西的两个名.也就是说,当你对DA2进行了修改后,对DA1进行查看,会发现他也是修改了的.所以当你程序中有需要复制多一个DA2进行修改,而且不引起DA1修改,要使用Copy(如下)
DataSet DA2=new DataSet();
DA2=DA1.Copy()
DataTable的使用也是一样,也有一个叫Copy的方法.但到最后了,当使用DataRow进行复制时,你会发现DataRow并没有一个叫Copy的方法,如果直接用DataTable.Add另一个表中的一行数时会提示"此行已属于另一个表",那是不是不能复制呢,不是,只是DataRow的复制方法不同,本人猜想可能是由于DataRow比较特殊他有一个隶属属性,也就是说,他不允许你创建一个空的DataRow对象,当你
DataRow DR1=new DataRow();
时会出现没有相关级别可操作.一定要改为
DataTable t=new DataTable();
DataRow r=t.NewRow();
才行,也就说,声明一个DataRow时,一定要指明是从哪个一表创建的新行.
,具体方法有两个(如下)
1.用DataRow.ItemArray
DataTable t=new DataTable();
DataRow r=t.NewRow();
r.ItemArray=oldRow.ItemArray;//oldRow在另一个表中foreach取得.
t.Rows.Add(r);
2.用DataTable.ImportRow()
t.ImportRow(oldRow);
相关文章推荐
- C# 关于DataSet, DataTable, DataRow 和DataColumn的区别和用法
- 关于DataSet、DataView、DataTable、DataRow、时间格式转换的一些用法
- DataSet & DataTable &DataRow 深入浅出
- 关于导出excel 把一个dataset的多个datatable导入到一个excel的多个sheet中
- asp.net DataSet、DataTable、DataRow、DataColumn应用全收集
- 关于c#中双主键表数据如何绑定到DataTable的方法(针对于dataset.xsd的特殊情况)
- DataSet、DataTable、DataRow、DataColumn区别及使用实例
- DataSet,DataTable与DataRow的复制方法
- 今天刚学会的关于dataset和datatable的区别
- DataTable,DataView,DataRowView,DefaultView与DataSet
- DataTable,DataView,DataRowView,DefaultView与DataSet
- 关于多个datatable合并到一个dataset
- 关于DataRow和DataColumn的一点个人简单理解-.NET教程,数据库应用
- dataset、datatable、dataColumn和dataRow
- DataSet和DataTable和DataRow和DataColumn
- DataSet,DataTable与DataRow的复制方法 [转]
- ADO.NET中DataSet、DataTable、DataRow的数据复制方法
- 发布一个Dataset、Datatable、Datarow、Datarow[]、Dataview的查看工具(vs2003/vs2005)
- 关于c#中双主键表数据如何绑定到DataTable的方法(针对于dataset.xsd的特殊情况)
- DataSet、DataTable、DataRow、DataColumn区别及使用实例