|
DataSet 對象是支持 ADO.NET的斷開式、分布式數(shù)據(jù)方案的核心對象 ,用途非常廣泛.我們很多時(shí)候需要使用其中的數(shù)據(jù),比如取得一個(gè)DataTable的數(shù)據(jù)或者復(fù)制另一個(gè)DataTabe中的數(shù)據(jù)或者是DataRow的數(shù)據(jù),但是只有DataSet和DataTable的復(fù)制是支持深層復(fù)制的,就是說不僅能復(fù)制元素的結(jié)構(gòu),而且能復(fù)制元素的數(shù)據(jù),而DataRow沒有相關(guān)的復(fù)制的方法,下面將簡單介紹下這些數(shù)據(jù)元素的復(fù)制問題。
DataTable sourceTable; 復(fù)制DataSet DataSet object = souceDataSet.Copy();//深復(fù)制 復(fù)制DataTable objectTable = sourceTable .Copy();//深復(fù)制 復(fù)制DataRow 項(xiàng)目開發(fā)中經(jīng)常遇到這種錯(cuò)誤-“此行已屬于另一個(gè)表” 。導(dǎo)致這個(gè)錯(cuò)誤的語句如下:
objectTable .Rows.Add(SourceDataRow);
objectTable = sourceTable.clone();//必須先復(fù)制表的架構(gòu),使具有相同的的列或關(guān)系! objectTable.ImportRow(oRow);//在objectTable中添加一個(gè)新行,并將sourceRow的值復(fù)制進(jìn)去,要求表的結(jié)構(gòu)一樣! } _____________________________________________________________________________________________________ 2. 循環(huán)DataTable的每個(gè)列 DataRow aDataRow = objectTable.NewRow(); foreach(DataColumn aDataColumn in sourceTable.Columns) { aDataRow [aDataColumn.ColumnName] = sourceTable[i][aDataColumn.ColumnName]; } objectTable.Rows.Add(aDataRow); 3. 自定義復(fù)制 objectTable.Columns.Add ("id");//不需要有一樣的架構(gòu),只復(fù)制自己需要的列! tempRow = objectTable.NewRow();//此方法必須調(diào)用! } 4. LoadDataRow方法:public DataRow LoadDataRow(Object[] values,bool fAcceptChanges); Object[] newRow = new Object[3]; |
|
|