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:""

时间: 2024-10-10 12:28:35

C#中DataTable中Rows.Add 和 ImportRow 对比的相关文章

C#中DataTable中的Compute方法使用收集

原文: C#中DataTable中的Compute方法使用收集 Compute函数的参数就两个:Expression,和Filter. Expresstion是计算表达式,关于Expression的详细内容请看这里“http://msdn2.microsoft.com/zh-cn/library/system.data.datacolumn.expression(VS.80).aspx”.而Filter则是条件过滤器,类似sql的Where条件. DataTable dt = new DataT

<转> C#中DataTable中的Compute方法使用收集

Compute函数的参数就两个:Expression,和Filter. Expresstion是计算表达式,关于Expression的详细内容请看这里“http://msdn2.microsoft.com/zh-cn/library/system.data.datacolumn.expression(VS.80).aspx”.而Filter则是条件过滤器,类似sql的Where条件. [csharp] view plaincopyprint? DataTable dt = new DataTab

C# DataTable中执行DataTable.Select("条件") <转>

1.在DataTable中执行DataTable.Select("条件")返回DataTable: // <summary> // 执行DataTable中的查询返回新的DataTable // </summary> // dt 是源数据DataTable // condition 是查询条件 DataTable newdt = new DataTable(); newdt = dt.Clone(); // 克隆dt 的结构,包括所有 dt 架构和约束,并无数据

在DataTable中执行DataTable.Select(&quot;条件&quot;)返回DataTable;

1.在DataTable中执行DataTable.Select("条件")返回DataTable: // <summary> // 执行DataTable中的查询返回新的DataTable // </summary> // dt 是源数据DataTable // condition 是查询条件 DataTable newdt = new DataTable(); newdt = dt.Clone(); // 克隆dt 的结构,包括所有 dt 架构和约束,并无数据

在DataTable中执行DataTable.Select(&quot;条件&quot;),

1.在DataTable中执行DataTable.Select("条件")返回DataTable: // <summary> // 执行DataTable中的查询返回新的DataTable // </summary> // dt 是源数据DataTable // condition 是查询条件 DataTable newdt = new DataTable(); newdt = dt.Clone(); // 克隆dt 的结构,包括所有 dt 架构和约束,并无数据

DataTable.ImportRow()与DataTable.Rows.Add()的区别

今天在写一个程序是遇到DataTable中添加行添加不了的问题,代码如下: DataTable dt = dataGridView1.DataSource as DataTable; DataTable dtTemp = stfBLL.GetDataByBoxID(boxId); DataRow dr = dt.NewRow(); dr["BoxID"] = dtTemp.Rows[0]["PicID"].ToString(); dr["Item"

ae动态显示属性表————切记DataTable中要先Add(row)之后再往里传值。

public partial class FrmAttributeTable : Form { private AxMapControl m_MapCtl; public FrmAttributeTable(AxMapControl pMapCtl) { InitializeComponent(); m_MapCtl = pMapCtl; } private void FrmAttributeTable_Load_1(object sender, EventArgs e) { ILayer pL

将DataTable中的某一行复制到另一个新的DataTable(转)

===前提:我们已经有一个DataTable的数据表 现在需要的只是其中的一行数据=== 比如说下面这段代码在一个方法里 返回的就是一个DataTable! sqlCon = new SqlConnection(strCon);             sqlCom = new SqlCommand();             sqlCom.Connection = sqlCon;             sqlCom.CommandText = "select_v";       

C# datatable增加行(datarow)数据为另一个datatable中某行

两个表A和B,两表结构相同.现在需要将A表中部分行拷贝到B表中,直接用 DataTableB.rows.add(dataTableA.rows[0]) 这样的方法式会报"row已经属于A表"这样的错误: 方法一: //得到A表中的部分行 DataRow[] drA = dtA.Select("aimtype=3"); //实例B DataTable dtB = dtA.Clone(); if (drA.Length > 0) { foreach (DataRo