最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#中DataSet、DataTable、DataRow數(shù)據(jù)的復(fù)制方法

 更新時間:2022年07月12日 10:43:48   作者:大CC  
這篇文章介紹了C#中DataSet、DataTable、DataRow數(shù)據(jù)的復(fù)制方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

DataSet 對象是支持 ADO.NET的斷開式、分布式數(shù)據(jù)方案的核心對象 ,用途非常廣泛.我們很多時候需要使用其中的數(shù)據(jù),比如取得一個DataTable的數(shù)據(jù)或者復(fù)制另一個DataTabe中的數(shù)據(jù)或者是DataRow的數(shù)據(jù),但是只有DataSet和DataTable的復(fù)制是支持深層復(fù)制的,就是說不僅能復(fù)制元素的結(jié)構(gòu),而且能復(fù)制元素的數(shù)據(jù),而DatatDataRow沒有相關(guān)的復(fù)制的方法,下面將簡單介紹下這些數(shù)據(jù)元素的復(fù)制問題。

DataTable sourceTable;
DataTable objectTable;
DatatDataRow sourceRow;
DatatDataRow 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

那我們應(yīng)該如何復(fù)制DataRow的數(shù)據(jù)了,下面將著重介紹幾種方法

1、ImportDataRow方法:

public void ImportDataRow( DataRow DataRow);

objectTable = sourceTable.clone();//必須先復(fù)制表的架構(gòu),使具有相同的的列或關(guān)系!
foreach (DataRow oRow in sourceTable)
{
    objectTable.ImportDataRow(oRow);//在objectTable中添加一個新行,并將sourceRow的值復(fù)制進(jìn)去,要求表的結(jié)構(gòu)一樣!
}

2、自定義復(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列的話就會報(bào)錯!
    tempRow.ItemArray = myArry;//ItemArray屬性為Object類型數(shù)組,根據(jù)程序的需要需要可自行復(fù)制多個列的數(shù)據(jù)!
    objectTable.Rows.Add(tempRow); //此方法必須調(diào)用,否則DataRow中的數(shù)據(jù)將不能顯示!
}

3、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();

該方法比較復(fù)雜,如果只是簡單的復(fù)制現(xiàn)有行的數(shù)據(jù)來添加新行的話建議不要采用,具體用法請參看sdk文擋。

DataRow的復(fù)制

如果直接通過RequirDT.Rows.Add(row),則運(yùn)行時會出現(xiàn)"該行已經(jīng)屬于一個表"的提示錯誤!至于其中的原因,通過DataSet和DataTable類比,從通常意義來說應(yīng)該不會出現(xiàn)錯誤提示,但是細(xì)細(xì)想來,我覺得應(yīng)該是由于DataTable的架構(gòu)設(shè)計(jì)所致,借鑒關(guān)系數(shù)據(jù)庫中的關(guān)系表,datacolumn定義了DataTable的整體架構(gòu),而具體的datarow是符合該架構(gòu)的一條記錄罷了!所以具有該架構(gòu)的行只能添加到具有相同架構(gòu)的表中!同時RequireDT.Rows.Add()實(shí)現(xiàn)捕獲 System.ArgumentException(The row ther belongs to another table or ready belongs to this table.)我想其實(shí)現(xiàn)也限制了不能通過該方法實(shí)現(xiàn)!

鑒于以上

1.ImportRow方法

DataTable RequireDT = SourceDT.Clone();
RequireDT.ImportRow(row);

2.見網(wǎng)上有這樣實(shí)現(xiàn)的

RequireDT.Rows.Add(row.ItemArray)

但是我編寫代碼并不能實(shí)現(xiàn),該函數(shù)的功能是Creates a row using specified values and adds it to the System.Data.DataRowCollection。所以也需要先拷貝源數(shù)據(jù)表的結(jié)構(gòu),方可成功!

3. 以下方法也可以實(shí)現(xiàn),但是也得先復(fù)制表的結(jié)構(gòu)

ObjectTable.BeginLoadData(); 
myRow = ObjectTable.LoadDataRow(newRow, true);
ObjectTable.EndLoadData();

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 帶你一文了解C#中的Expression

    帶你一文了解C#中的Expression

    c#中有Expression,即表達(dá)式,通過Expression可以動態(tài)構(gòu)造代碼,并編譯執(zhí)行,下面這篇文章主要給大家介紹了關(guān)于C#中Expression的相關(guān)資料,需要的朋友可以參考下
    2021-12-12
  • unity實(shí)現(xiàn)玻璃效果

    unity實(shí)現(xiàn)玻璃效果

    這篇文章主要為大家詳細(xì)介紹了unity實(shí)現(xiàn)玻璃效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-04-04
  • C#中圖片的Base64編碼與解碼轉(zhuǎn)換詳解

    C#中圖片的Base64編碼與解碼轉(zhuǎn)換詳解

    在C#中,我們可以使用Base64編碼將圖片轉(zhuǎn)換為字符串,也可以將Base64編碼的字符串轉(zhuǎn)換回圖片,這通常用于在需要文本表示圖像數(shù)據(jù)的場合(例如在Web開發(fā)中傳輸圖像數(shù)據(jù)),本文介紹了C#中圖片的Base64編碼與解碼轉(zhuǎn)換,需要的朋友可以參考下
    2024-12-12
  • C#實(shí)現(xiàn)連接電子秤串口自動稱重

    C#實(shí)現(xiàn)連接電子秤串口自動稱重

    這篇文章介紹了C#實(shí)現(xiàn)連接電子秤串口自動稱重的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-04-04
  • C#獲取文件MD5值的實(shí)現(xiàn)示例

    C#獲取文件MD5值的實(shí)現(xiàn)示例

    文件的md5值,即文件簽名,為了驗(yàn)證文件的正確性,是否被惡意篡改等。每個文件有一個唯一的md5。下面這篇文中就給大家介紹了如何利用C#獲取文件MD5值,有需要的朋友們可以參考借鑒,下面來一起看看吧。
    2016-12-12
  • c#斐波那契數(shù)列(Fibonacci)(遞歸,非遞歸)實(shí)現(xiàn)代碼

    c#斐波那契數(shù)列(Fibonacci)(遞歸,非遞歸)實(shí)現(xiàn)代碼

    c#斐波那契數(shù)列(Fibonacci)(遞歸,非遞歸)實(shí)現(xiàn)代碼,需要的朋友可以參考一下
    2013-05-05
  • unity將圖片轉(zhuǎn)換成字體的方法

    unity將圖片轉(zhuǎn)換成字體的方法

    這篇文章主要為大家詳細(xì)介紹了unity將圖片轉(zhuǎn)換成字體的方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-04-04
  • C# WinForm實(shí)現(xiàn)鼠標(biāo)穿透的操作代碼

    C# WinForm實(shí)現(xiàn)鼠標(biāo)穿透的操作代碼

    本文介紹了在WinForm開發(fā)中實(shí)現(xiàn)鼠標(biāo)穿透功能的方法,主要使用Windows API函數(shù)SetWindowLong和GetWindowLong,這些函數(shù)已被新版取代,建議使用SetWindowLongPtr和GetWindowLongPtr以保證32/64位系統(tǒng)兼容性,文章詳細(xì)說明了函數(shù)參數(shù)及調(diào)用方法,需要的朋友可以參考下
    2025-11-11
  • C#使用LINQ查詢操作符實(shí)例代碼(一)

    C#使用LINQ查詢操作符實(shí)例代碼(一)

    這篇文章介紹了C#使用LINQ查詢操作符的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-06-06
  • 微信開發(fā)--企業(yè)轉(zhuǎn)賬到用戶

    微信開發(fā)--企業(yè)轉(zhuǎn)賬到用戶

    本文主要介紹了微信開發(fā)--企業(yè)轉(zhuǎn)賬到用戶的實(shí)現(xiàn)方法與步驟。具有很好的參考價(jià)值,下面跟著小編一起來看下吧
    2017-01-01

最新評論

临猗县| 古浪县| 海原县| 静海县| 伊通| 沁阳市| 股票| 寿光市| 德令哈市| 长乐市| 务川| 夏邑县| 永州市| 富顺县| 黑山县| 莲花县| 卫辉市| 南安市| 凤冈县| 杂多县| 胶南市| 桂林市| 金溪县| 丹江口市| 新巴尔虎右旗| 南昌县| 奉贤区| 奉化市| 滨州市| 北川| 义马市| 大兴区| 哈巴河县| 临朐县| 临沭县| 韩城市| 北海市| 新竹市| 宣武区| 牙克石市| 遂昌县|