产生错误的代码:

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);

查看原文