国产探花免费观看_亚洲丰满少妇自慰呻吟_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);這樣操作的話,有點畫蛇添足,不建議使用!
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 成武县| 武安市| 运城市| 衡山县| 五常市| 青浦区| 肥乡县| 金门县| 青神县| 紫阳县| 阳泉市| 汶川县| 宿迁市| 久治县| 平利县| 长兴县| 固安县| 历史| 乌海市| 南阳市| 五华县| 舟曲县| 和平区| 汶上县| 铜鼓县| 鞍山市| 乐都县| 锡林郭勒盟| 十堰市| 晋中市| 洛阳市| 祁连县| 开鲁县| 繁昌县| 马关县| 昆明市| 枞阳县| 奎屯市| 磐石市| 汝城县| 托里县|