日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql 多数据库事务_多数据库事务处理

發布時間:2023/12/4 数据库 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql 多数据库事务_多数据库事务处理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

看見園子里面一位高人寫了一篇多數據庫事務處理的東西,覺得很有意思,把它重寫了一下。

在一個數據庫中實現事務是沒什么問題,當時項目中常常會遇到多個數據庫交叉事務的情況,這個方法使用兩個SqlTransaction 來處理這兩個數據庫中的事務,當一個更新不成功兩個都要回滾。

public void TransactionDebug()

{

string sql1 = @"Data Source=XXXXXX;Initial Catalog=stuDB;Integrated Security=True";

string sql2 = @"Data Source=XXXXXX;Initial Catalog=Northwind;Integrated Security=True";

SqlConnection conn1 = new SqlConnection(sql1);

SqlConnection conn2 = new SqlConnection(sql2);

string sqlUpdate1 = "UPDATE stuInfo SET stuAddress='江南' WHERE stuNO='s25301'";

string sqlUpdate2 = "UPDATE Products SET ProductName='Chian' WHERE ProductID=1";

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 effectrow=0;

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();

}

}

總結

以上是生活随笔為你收集整理的mysql 多数据库事务_多数据库事务处理的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。