C# 该行已经属于还有一个表 的解决方法
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C# 该行已经属于还有一个表 的解决方法相关的知识,希望对你有一定的参考价值。
产生错误的代码:
DataTable dtContract_src = Oper.GetDataTable("select * from T_Contract where ProjectID=" + ProjectID_src + " and Flag=0", con_src);
foreach (DataRow dr in dtContract_src.Rows)
{
String ContractID_src = dr["ContractID"].ToString();
DataTable dtContract_dst = Oper.GetDataTable("select * from T_Contract where ProjectID=" + ProjectID_src + " and ContractID=" + ContractID_src + " and Flag=0", con_dst);
if (dtContract_dst.Rows.Count != 0)
{
impContract_exist++;
continue;
}
dtContract_dst.Rows.Add(dr);
String columns = "";
String paramss = "";
OleDbCommand updateCmd = con_dst.CreateCommand();
foreach (DataColumn dc in dtContract_dst.Columns)
{
if (columns == "")
{
columns = dc.ColumnName;
paramss = "@" + dc.ColumnName;
}
else
{
columns += ", " + dc.ColumnName;
paramss += ", @" + dc.ColumnName;
}
updateCmd.Parameters.Add(new OleDbParameter(dc.ColumnName, dc.DataType);
}
updateCmd.CommandText = "insert into T_Contract(" + columns + ") Values(" + paramss + ")";
updateCmd.ExecuteNonQuery();
//OleDbDataAdapter dataAdap = new OleDbDataAdapter();
//dataAdap.InsertCommand = updateCmd;
//dataAdap.Update(dtContract_dst);
}
错误行:
dtContract_dst.Rows.Add(dr);
解决的方法:
dtContract_dst.Rows.Add(dr.ItemArray);
以上是关于C# 该行已经属于还有一个表 的解决方法的主要内容,如果未能解决你的问题,请参考以下文章
System.ArgumentException: 该行已经属于另一个表。看下面代码
C# 将DataTable一行放入另一个DataTable中