国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

DataTable.ImportRow()與DataTable.Rows.Add()的區別

2019-11-17 02:26:03
字體:
來源:轉載
供稿:網友

DataTable.ImportRow()與DataTable.Rows.Add()的區別

今天寫代碼的時候用到ImportRow()向DataTable中添加記錄,代碼如下:

DataTabledt =datatable;DataRowdr= dt.NewRow();dr["FileName"]=fileName;dr["DbName"]=DbName;dt.ImportRow(dr);

可是執行后發現dtAppendix中的記錄并沒有增加。可是將上述紅色色代碼換成dt.Rows.Add(dr);就可以了。后上網查了下資料弄清楚了原因。下面就說一下這兩者的用法與區別及其適用情況。1、首先,我們先說下DataTable.NewRow()方法,這個方法可以創建和表具有相同構架的DataRow(而且必須使用這個方法才能創建和原表一樣構架的DataRow),并且這個新行是添加在原表上的。但是我發現這個DataTable中并沒有這個空行。為什么?原因是這樣的:原來Datatable中Rows都一個RowState屬性,共有如下幾種:1,Detached該行已被創建,但不屬于任何DataRowCollection。DataRow在以下情況下立即處于此狀態:創建之后添加到集合中之前;或從集合中移除之后。2,Unchanged該行自上次調用AcceptChanges以來尚未更改。3,Added該行已添加到DataRowCollection中,AcceptChanges尚未調用。4,Deleted該行已通過DataRow的Delete方法被刪除。5,Modified該行已被修改,AcceptChanges尚未調用。其實NewRow()創建的行其RowState是Detached,顯而易見新建的行是不可見。

2、ImportRow()將DateRow復制到DataTable中,保留任何屬性設置以及初始值和當前值。但是當DataRow的RowState屬性為Detached時無法復制,所以可見上述紅色代碼不可行了。網上有人說不能復制是因為新建的行隸屬于原表,我認為這是不正確,究其原因很是因為行的屬性。其實如果我們把行的屬性改變的話,ImportRow()方法還是可行的。ImportRow()一般用于將一個表中的數據復制到另一個表中。實例代碼如下:

DataTabledtNew=dt.Clone();foreach(DataRowdrindt.Rows){dtNew.ImportRow(dr);}如果真的想使用ImportRow(),可以先增加一個空行,這樣操作:DataTabledt =datatable;DataRowdr=dt.NewRow();dr["FileName"]=fileName;dr["DbName"]=DbName;dt.Row.add();dt.ImportRow(dr);這樣操作的話,有點畫蛇添足,不建議使用!
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 彭水| 白银市| 龙里县| 湛江市| 濮阳市| 育儿| 阳江市| 永嘉县| 镇雄县| 沁阳市| 林甸县| 临漳县| 浮梁县| 巴中市| 长子县| 永清县| 文安县| 旬邑县| 湾仔区| 尉犁县| 宕昌县| 平泉县| 当雄县| 雷山县| 林西县| 赫章县| 嘉定区| 天祝| 平安县| 安徽省| 博白县| 宁津县| 兴山县| 黄梅县| 青州市| 舞阳县| 敦煌市| 江油市| 邵阳市| 曲松县| 类乌齐县|