小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

DataSet,DataTable,DataRow關(guān)系

 Frank_Chia 2009-11-13
        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;
DataTable objectTable;
DataRow sourceRow;
DataRow objectRow;
DataRow tempRow;
DataSet souceDataSet = new DataSet();

復(fù)制DataSet

   DataSet object = souceDataSet.Copy();//深復(fù)制
   DataSet object = souceDataSet.Clone();//淺復(fù)制,只復(fù)制架構(gòu)

復(fù)制DataTable

   objectTable   = sourceTable .Copy();//深復(fù)制
   objectTable   = sourceTable .Clone();//淺復(fù)制,只復(fù)制架構(gòu)

復(fù)制DataRow

     項(xiàng)目開發(fā)中經(jīng)常遇到這種錯(cuò)誤-“此行已屬于另一個(gè)表” 。導(dǎo)致這個(gè)錯(cuò)誤的語句如下:

 

     objectTable .Rows.Add(SourceDataRow);


       分析了一下原因,因?yàn)镈ataRow DataTable 都是傳引用調(diào)用的。所以一個(gè)行在一個(gè)表中了,就不能再增加到另外一個(gè)表。


具體方法:


1 ImportRow方法:public void ImportRow( DataRow DataRow);

objectTable = sourceTable.clone();//必須先復(fù)制表的架構(gòu),使具有相同的的列或關(guān)系!
foreach (DataRow oRow in sourceTable)
{

        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ù)制自己需要的列!
Object [] myArry = new Object [1];
    foreach (DataRow oRow in sourceTable)
{

   tempRow = objectTable.NewRow();//此方法必須調(diào)用!
   myArry[0] = oRow["id"];//如果myArry中沒有源表中的id列的話就會(huì)報(bào)錯(cuò)!
   tempRow.ItemArray = myArry;//ItemArray屬性為Object類型數(shù)組,根據(jù)程序的需要需要可自行復(fù)制多個(gè)列的數(shù)據(jù)!
   objectTable.Rows.Add(tempRow); //此方法必須調(diào)用,否則DataRow中的數(shù)據(jù)將不能顯示!

}
_____________________________________________________________________________________________________

4. LoadDataRow方法:public DataRow LoadDataRow(Object[] values,bool fAcceptChanges);

     Object[] newRow = new Object[3];
    // 設(shè)置對象數(shù)組的值
     newRow[0] = "Hello";
     newRow[1] = "World";
     newRow[2] = "two";
     DataRow myRow;
     ObjectTable.BeginLoadData();
     // 將新行添加到表中
     myRow = ObjectTable.LoadDataRow(newRow, true);//標(biāo)志要設(shè)置為true,表示添加新行
     ObjectTable.EndLoadData();

    本站是提供個(gè)人知識管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多