广州市专注网站建设品牌,淘宝网站建设的目标什么,网站风格定位有哪些,wordpress迁移服务器看见园子里面一位高人写了一篇多数据库事务处理的东西#xff0c;觉得很有意思#xff0c;把它重写了一下。在一个数据库中实现事务是没什么问题#xff0c;当时项目中常常会遇到多个数据库交叉事务的情况#xff0c;这个方法使用两个SqlTransaction 来处理这两个数据库中的…看见园子里面一位高人写了一篇多数据库事务处理的东西觉得很有意思把它重写了一下。在一个数据库中实现事务是没什么问题当时项目中常常会遇到多个数据库交叉事务的情况这个方法使用两个SqlTransaction 来处理这两个数据库中的事务当一个更新不成功两个都要回滚。public void TransactionDebug(){string sql1 Data SourceXXXXXX;Initial CatalogstuDB;Integrated SecurityTrue;string sql2 Data SourceXXXXXX;Initial CatalogNorthwind;Integrated SecurityTrue;SqlConnection conn1 new SqlConnection(sql1);SqlConnection conn2 new SqlConnection(sql2);string sqlUpdate1 UPDATE stuInfo SET stuAddress江南 WHERE stuNOs25301;string sqlUpdate2 UPDATE Products SET ProductNameChian WHERE ProductID1;SqlCommand sc1 new SqlCommand(sqlUpdate1, conn1);SqlCommand sc2 new SqlCommand(sqlUpdate2, conn2);conn1.Open();SqlTransaction sqlTran1 conn1.BeginTransaction();conn2.Open();SqlTransaction sqlTran2 conn2.BeginTransaction();int effectrow0;using(TransactionScope tranScope new TransactionScope()){try{sc1.Transaction sqlTran1;effectrow sc1.ExecuteNonQuery();sc2.Transaction sqlTran2;effectrow sc2.ExecuteNonQuery();}catch(SqlException ex){sqlTran1.Rollback();sqlTran2.Rollback();conn1.Close();conn2.Close();throw ex;}if(effectrow 2){sqlTran1.Commit();sqlTran2.Commit();}else{sqlTran1.Rollback();sqlTran2.Rollback();}conn1.Close();conn2.Close();}}