详细介绍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#该行已经属于另一个表的解决方法的详细内容。