举个例子如下:有一个dataset中含有一个datatable对象,该datatable对应数据库中的一个表,
datatable对象中存在一些行,有新行,已修改了的行,删除的行,如何将自动生成命令做成事务型
具体如下:
数据库表 ceiproggroup含有id(自动生成列),name//修改的页面update.aspx,当然我只是简单举例,实际程序比这复杂
SqlConnection conn=new SqlConnection("server=localhost;uid=sa;pwd=sscyy;database=pwd");
SqlDataAdapter catDA = new SqlDataAdapter("select id,name from ceiproggroup ", conn);       

DataSet catDS = new DataSet();
catDA.Fill(catDS, "ceiproggroup");foreach(DataRow myrow in catDS.Tables["ceiproggroup"].Rows){
if (myrow[1].ToString()=="eeee") myrow["name"]="fffff";
if (myrow[0].ToString()=="uuuu") myrow.Delete();
}

DataRow dr=catDS.Tables["ceiproggroup"].NewRow();
dr["name"]="uuuu";
catDS.Tables["ceiproggroup"].Rows.Add(dr);dr=catDS.Tables["ceiproggroup"].NewRow();
dr["name"]="eeee";
catDS.Tables["ceiproggroup"].Rows.Add(dr);

Session["ceiproggroup"]=catDS.Tables["ceiproggroup"];//将修改写回到数据库updateresult.aspx
SqlConnection conn=new SqlConnection("server=localhost;uid=sa;pwd=sscyy;database=pwd");
SqlDataAdapter catDA = new SqlDataAdapter("select id,name from ceiproggroup", conn);       
SqlCommandBuilder custCB = new SqlCommandBuilder(catDA);

DataSet catDS = new DataSet();
catDA.Fill(catDS, "ceiproggroup");   
catDS.Tables["ceiproggroup"].Rows.Clear();

catDS.Merge((DataTable)Session["ceiproggroup"]);catDA.Update(catDS,"ceiproggroup");以上不能保证插入,修改,删除行的操作成为一个事务,我做过测试,
修改和删除能顺利完成而插入操作的那一部分不能顺利执行的情况可能出现
如何避免类似此种情况