产生错误的代码:
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)