public bool CopyDataSet_SQL(string sql, DataSet ds_data)
{
//sql目标数据表,ds_data源数据表
IDbCommand dbc = _dbf.GetDBCommand();
if (_dbtrans != null)
{
dbc.Transaction = _dbtrans;
}
dbc.Connection = _dbconn;
dbc.CommandText = sql;
IDbDataAdapter ida = _dbf.GetDataAdapter(dbc);
SqlCommandBuilder scb = new SqlCommandBuilder((SqlDataAdapter)ida); //必须加入此项内容,否则提示"当传递具有新行的 DataRow 集合时,更新要求有效的 InsertCommand。"
DataSet ds = new DataSet();
try
{
ida.Fill(ds);
for (int i = 0; i < ds_data.Tables[0].Rows.Count; i++)
{
//整行复制-----方法一
//DataRow dr_New= ds.Tables[0].NewRow(); //NewRow之后,RowState的状态为Added
//dr_New.ItemArray = ds_data.Tables[0].Rows[i].ItemArray;
//ds.Tables[0].Rows.Add(dr_New);
//整行复制-----方法二
ds.Tables[0].ImportRow(ds_data.Tables[0].Rows[i]);
ds.Tables[0].Rows[ds.Tables[0].Rows.Count - 1].SetAdded(); //修改插入行的状态为Added,否则提交到数据库中
}
//提交插入的数据
int row = 0;
row = ida.Update(ds);
if (row > 0)
{
return true;
}
else
{
return false;
}
}
catch
{
ds.Clear();
throw;
}
}