.NET中利用SqlDataAdapter修改数据库中的表(数据库源)(转)
用SqlDataAdapter修改数据库中的表(数据源)
【内容】
/*
修改数据集中的表,软后保存到数据库中
传入的参数:
String sql=""
sql+="select * from tb1";
sql+=Environment.NewLine;
sql+="select * from tb2";
注意:查询语句必须要查询出表的所有字段。
*/
public void UpdateDataFromDSToDB(string sql)
{
SqlConnection conn = new SqlConnection(ADDbBase.SqlStr);
SqlDataAdapter sda = new SqlDataAdapter();
//下面的两句很关键,利用SqlCommandBuilder对象与一个合法的SelectCommand对象,
//来填充SqlDataAdapter 对象的全部4个命令属性
sda.SelectCommand = new SqlCommand(sql,conn);
SqlCommandBuilder scb = new SqlCommandBuilder(sda);
conn.Open();
DataSet ds = new DataSet();
sda.Fill(ds);
//modify data in dataset
DataTable dtOne = ds.Tables[0];
DataTable dtTwo = ds.Tables[1];
for(int i=0; i<dtOne.Rows.Count; i++)
{
bool modify = false;
int num = 0;
for(int j=0; j<dtTwo.Rows.Count; j++)
{
if(dtOne.Rows[i]["cateInherit"].ToString() == dtTwo.Rows[j]["cateUpID"].ToString())
{
dtTwo.Rows[j]["cateUpID"] = dtOne.Rows[i]["cateid"];
modify = true;
num++;
}
else
{
modify = false;
}
if(modify == false && num != 0)
{
break;
}
}
}
try
{
//修改数据源,Update方法首先获取DataTable对象的变化情况,然后逐行地修改
//在ADO.NET 2.0中,可以在Update之前设置UpdateBatchSize的值,以一批修改多条记录的方式
//发送给数据库,来提高性能
sda.Update(dtTwo);
}
catch(Exception ex)
{
Util.AlertMesg(ex.Message); //Util是自己定义的方法
}
finally
{
conn.Close();
}
}