【问题标题】:exception while adding multiple rows to datatable. Couldn't store <System.Data.DataRowCollection>向数据表添加多行时出现异常。无法存储 <System.Data.DataRowCollection>
【发布时间】:2011-04-21 16:01:08
【问题描述】:

idLocals 是数据库中的主键

填充数据表

oDtLocalCharge = bll.GetData();

我正在将数据表复制到另一个函数中

   dtLocalCharges = oDtLocalCharge.Copy();

并尝试使用以下代码添加行

DataRowCollection drr = oDtLocalCharge.Rows;
dtLocalCharges.Rows.Add(drr);

当我尝试向数据表中添加行时,出现如下错误


Error: 
{System.ArgumentException: Unable to cast object of type 'System.Data.DataRowCollection' to type 'System.IConvertible'.Couldn't store <System.Data.DataRowCollection> in idLocals Column.  Expected type is Int32. ---> System.InvalidCastException: Unable to cast object of type 'System.Data.DataRowCollection' to type 'System.IConvertible'.

可能是主键idLocals导致问题 有什么问题?

我该如何解决这个问题?我想在dtLocalCharges 表中多次添加行

【问题讨论】:

    标签: c# .net sql ado.net datatable


    【解决方案1】:

    首先,您不能将 Add() 与 DataRowCollection 一起使用。您需要单独添加每一行。您可能需要使用 NewRow,复制值,然后调用 Add。

    先试试这个:

    DataRowCollection drr = oDtLocalCharge.Rows;
    foreach (var row in drr) dtLocalCharges.Rows.Add(row);
    

    【讨论】:

    • 好一个!我没有查看整个 DataTable API。
    【解决方案2】:

    这是将一个数据表的所有行导入另一个数据表的最佳方式:

    datatable1.Load(New DataTableReader(datatable2))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-10-14
      • 2011-04-01
      • 2012-11-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多