System.ArgumentException: 输入数组长度大于此表中的列数。

完整错误信息

System.ArgumentException: 输入数组长度大于此表中的列数。
在 System.Data.DataTable.NewRecordFromArray(Object[] value)
在 System.Data.DataRowCollection.Add(Object[] values)
在 \MainFrm.ImportDB_InsertRecord(OleDbTransaction dbtran, DataTable destTable, String insertCommand, DataRow dr_src, String pKColumnName, Int32& primaryKeyValue, FilterColumn filterColumn) 位置 J:\csProjects\Main.cs:行号 2636
在 \MainFrm.ImportDB_ImportTable(OleDbConnection con_src, OleDbTransaction dbtran, String tableName, FilterColumn filterColumn) 位置 J:\csProjects\Main.cs:行号 2573
在 \MainFrm.ImportDB_ImportContract(OleDbConnection con_src, OleDbTransaction dbtran, String ProjectID_src, Int32& impContract_exist, Int32& impContract_succe) 位置 J:\csProjects\Main.cs:行号 2519
在 \MainFrm.ImportDB_ImportProject(String srcDBFilePath) 位置 J:\csProjects\Main.cs:行号 2382

错误代码行

destTable.Rows.Add(dr_src.ItemArray);

destTable类型为:System.Data.DataTable
dr_src的类型为:System.Data.DataRow

错误原因

dr_src包含的列数大于destTable包含的列数。

解决方案

根据目标数据表的结构生成新行,然后逐个字段填充;

DataRow dr_new = destTable.NewRow();
foreach (DataColumn dc in destTable.Columns)
{
    if (dr_src.Table.Columns.Contains(dc.ColumnName))
    {
        dr_new[dc.ColumnName] = dr_src[dc.ColumnName];
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值