C#中DataTable中Rows.Add 和 ImportRow 對比


最近參加項目中,數據操作基本都是用DataTable的操作,老代碼中有些地方用到DataTable.Rows.Add又有些代碼用的DataTable.ImportRow,於是就對比了一下

VS查詢說明:顯示

//
// 摘要: 
// 創建使用指定值的行,並將其添加到 System.Data.DataRowCollection 中。
//
// 參數: 
// values:
// 用於創建新行的值的數組。
//
// 返回結果: 
// 無。
//
// 異常: 
// System.ArgumentException:
// 數組大於表中的列數。
//
// System.InvalidCastException:
// 值與其各自的列類型不匹配。
//
// System.Data.ConstraintException:
// 添加行將使約束無效。
//
// System.Data.NoNullAllowedException:
// 嘗試將空值放到 System.Data.DataColumn.AllowDBNull 為 false 的列中。
public DataRow Add(params object[] values);

-----------------------------------------------------------------------------------------------------------------------

//
// 摘要: 
// 將 System.Data.DataRow 復制到 System.Data.DataTable 中,保留任何屬性設置以及初始值和當前值。
//
// 參數: 
// row:
// 要導入的 System.Data.DataRow。
public void ImportRow(DataRow row);

  

 

解釋說明:Add方法支持小於最大字段列數的數組,ImportRow方法插入一個DataRow對象

代碼測試:

創造兩個DataTable :

DataTable tab1 = new DataTable();
tab1.Columns.Add("Name1", typeof(string));
tab1.Columns.Add("Password", typeof(string));
tab1.Columns.Add("Sex", typeof(bool));


DataTable tab2 = new DataTable();
tab2.Columns.Add("Name", typeof(string));
tab2.Columns.Add("Password", typeof(string));
tab2.Columns.Add("Sex", typeof(bool));
tab2.Columns.Add("Addr", typeof(string));

測試tab1 新增數據插入table2

           try
            {
                tab1.Rows.Add("test", "test", 1);
                tab2.Rows.Add(tab1.Rows[0].ItemArray);
                //tab2.ImportRow(tab1.Rows[0]);
                Console.WriteLine(tab2.Rows.Count);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }

  結果 都是打印出了1,

     Add方法是根據數組順序保存到對應的字段:tab2 的字段  Name:"test"   Password:"test"  age:1 addr:""

     ImprotRow會識別字段名稱:tab2 的字段  Name:""   Password:"test"  age:1 addr:""

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM