【发布时间】:2017-06-24 21:02:13
【问题描述】:
我正在尝试将数据行从一个本地数据表传输到另一个数据表。但我收到一条错误消息:
System.Data.dll 中出现“System.ArgumentException”类型的异常,但未在用户代码中处理
附加信息:该行已经属于另一个表。
我的代码:
DataTable missedQueue = new DataTable();
DataSet queue = DBMgr.GetDataSet("SELECT * FROM queue");
DataRow dr = queue.Tables[0].NewRow();
for (int i = 0; i < queue.Tables[0].Columns.Count; i++)
{
dr[queue.Tables[0].Columns[i].ColumnName] = queue.Tables[0].Rows[0][i];
}
missedQueue.Rows.Add(dr); // error shown here
但是在我研究并将代码更改为
missedQueue.Rows.Add(dr.ItemArray);
它说“输入数组比这个表的列数长。”
【问题讨论】:
-
这个错误是由于missedQueue表没有schema造成的。它只是一个没有任何列的空数据表。您需要克隆源表(如果您只想复制第一行),或者如果您想将整个表复制到新表中,请使用 Copy 方法。
-
@Steve 我已经创建了missedQueue这个表,列和队列表完全一样。
-
错误信息怎么解释?
-
尝试使用调试器检查源表中 Columns.Count 的值与目标表中的相同值。根据错误信息,它们不能相同
-
您能否澄清一下您是要复制整个表格还是只复制第一行?
标签: c# asp.net visual-studio