看见园子里面一位高人写了一篇多数据库事务处理的东西,觉得很有意思,把它重写了一下。

在一个数据库中实现事务是没什么问题,当时项目中常常会遇到多个数据库交叉事务的情况,这个方法使用两个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 多数据库事务_多数据库事务处理相关推荐

  1. mysql服务器级别角色_服务器数据库系列 - MySQL事务隔离级别详解

    作者:xm_king SQL标准定义了4类隔离级别,包括了一些具体规则,用来限定事务内外的哪些改变是可见的,哪些是不可见的.低级别的隔离级一般支持更高的并发处理,并拥有更低的系统开销. Read Un ...

  2. 【MySQL 第17章_其他数据库日志】

    第17章_其他数据库日志 1.MySQL支持的日志 1.1日志类型 1.2日志的弊端 2.慢查询日志(slow query log) 3.1问题场景 3.2 查看当前状态 3.3 启动日志 3.4 查 ...

  3. jsp和mysql答辩_如何应对JSP连接MySQL数据库问题_网站数据库怎么连接到网页答辩问题...

    当您面临JSP连接MySQL数据库问题,你首先需要在MySQL数据库里创建一username表,表里面创建两个字符型的字段,字段名分别为:uid,pwd,然后插入几条测试数据. 以下用两种方式来实现J ...

  4. 增大mysql修改表空间_扩充数据库表空间

    ALTER TABLESPACE ADD DATAFILE , [REUSE] NEXT MAXSIZE <>中是你要填的内容,有|是选其一. 如:增加文件是d:\dbfs\mydatab ...

  5. mysql文件碎片整理_对数据库磁盘驱动器进行碎片整理 | Microsoft Docs

    对 SQL Server 数据库磁盘驱动器进行碎片整理 12/02/2020 本文内容 本文提供了有关 SQL Server 数据库驱动器的碎片整理的一些指南. 原始产品版本:   SQL Serve ...

  6. 改变mysql的数据编码格式_修改数据库编码格式(转)

    MySQL的默认编码是Latin1,不支持中文,要支持中午需要把数据库的默认编码修改为gbk或者utf8. 1.需要以root用户身份登陆才可以查看数据库编码方式(以root用户身份登陆的命令为:&g ...

  7. mysql的多媒体类型_多媒体数据库技术及其发展方向

    多媒体数据库(M如IDB, Multimedia Database)是多媒体技术与产生的一种新型数据库.是指数据库中的信息不仅.字符等格式化的表达形式,而且还包括多媒体的非格,数据管理要涉及各种复杂对 ...

  8. mysql中家庭关系_家庭数据库是什么

    什么是家庭数据库 家庭数据库(Home DataBase,HDB)是存储资料.知识.工作文件.音视频节目的载体,是支持家用多媒介平台的基石. 家庭数据库的建立 为了对家庭中的各种类型的信息进行管理,首 ...

  9. 数据库事务隔离级ORACLE数据库事务隔离级别介绍

    本文系转载,原文地址:http://singo107.iteye.com/blog/1175084 数据库事务的隔离级别有4个,由低到高依次为Read uncommitted.Read committ ...

最新文章

  1. 50 种系统免遭黑客侵袭的方法 [2017 年版]
  2. input 换行_Python输出数据print,获取输入数据input,基础入门
  3. Leetcode 94.二叉树的中序遍历 (每日一题 20210712)
  4. ps -aux|grep 详细信息
  5. Delphi XE5 for Android (十一)
  6. ubuntu 自动挂载工具_Ubuntu设置开机自动挂载所有格式硬盘分区
  7. 获取对象的接口信息(方法/属性/事件)(VB6代码)
  8. 【清北学堂2018-刷题冲刺】Contest 2
  9. AndroidStudio实现在图片上涂鸦并记录涂鸦轨迹
  10. 坚果pro2刷Nitrogen OS安卓pie纯正原生
  11. 【准备篇】1.Simulink-F28335自动代码生成开发环境搭建
  12. 用rest造句子_rest造句
  13. C语言随机获取小写字母
  14. 【数学】微积分的大用处
  15. 一个人写公众号能赚多少钱?我的副业之路
  16. 美团外卖开放平台对接经验总结(一)
  17. Linux显示瞬间进程动态的命令ps
  18. Arm芯片上电启动流程剖解
  19. 【蓝桥杯嵌入式】第十二届蓝桥杯嵌入式省赛程序设计试题以及详细题解
  20. 零基础HTML教程(13)--霸道的div与和气的span

热门文章

  1. Abp vNext 后台作业hangfire
  2. 你遇到的面试官是「伯乐」吗?
  3. Serverless那么火,2019年的采用如何?
  4. .Net Core实现健康检查
  5. 从MVP到微软产品经理的几点心得
  6. 在 .NET Core 中运行 JavaScript
  7. Docker最全教程之Ubuntu下安装Docker(十五)
  8. 领域驱动设计,让程序员心中有码(三)
  9. Ubuntu 16.04+.Net Core+Docker+Nginx安装部署
  10. 弹性和瞬态故障处理库Polly介绍