在发布System.Transaction命名空间之前,可以直接用ADO.NET创建事务,也可以通过组件、特性和COM+运行库(位于System.EnterpriseServices命名空间中)进行事务处理。本文如题所示,介绍在这些传统事务处理方式中较为简单的“ASP.NET事务”。

在传统的ADO.NET事务中,如果没有手动创建事务,每条SQL语句就都是一个事务。如果多条SQL语句应参与到同一个事务处理中,就必须手动创建一个事务。

下面通过一个示例演示:

在MySql中建立如下表:

插入数据如下:

ADO.NET事务测试代码:

using(MySqlConnection conn = new MySqlConnection(GetConnection()))

{

conn.Open();

//启动一个事务

using(MySqlTransaction transaction = conn.BeginTransaction())

{

using (MySqlCommand cmd = conn.CreateCommand())

{

try

{

cmd.Transaction = transaction; //为命令指定事务

cmd.CommandText = "INSERT INTO tb_user(UserId,UserName) VALUE('Id0009','Name0002');";

cmd.ExecuteNonQuery();

cmd.CommandText = "INSERT INTO tb_user(UserId,UserName) VALUE('Id0008','Name0003');";

cmd.ExecuteNonQuery();

transaction.Commit(); //事务提交

Response.Write("");

}

catch(Exception ex)

{

transaction.Rollback(); //事务回滚

Response.Write(ex.Message);

Response.Write("");

}

}

}

}

代码分析:

如示例代码手动创建ADO.NET事务步骤如下:

1)使用MySqlConnection类的BeginTransaction()方法返回一个MySqlTransaction类型的对象;

2)使用MySqlCommand类对象的Transaction属性将要参与事务处理的每条命令关联到上一不返回的MySqlTransaction类型的对象上;

3)如果事务可以成功完成,使用MySqlTransaction对象的Commit()方法提交事务处理结果;

4)如果事务处理中发生错误,就调用MySqlTransaction对象的Rollback()方法,撤销每一个修改。

ADO.NET事务的缺点;

ADO.NET事务只能处理关联到一个连接上的本地事务,不支持跨多个连接的事务。(为了克服这一缺点,下一节将介绍基于System.Transaction命名空间的分布式事务)。

ado.net mysql 事务_ADO.NET事务相关推荐

  1. ado的mysql参数化_ADO参数化(VBA)

    ADO参数化的好处 避免SQL注入攻击:2. 省去SQL字符串拼接:3. 避免出错 方式一 Dim cn As ADODB.Connection Dim rs As ADODB.Recordset D ...

  2. ado.net mysql 下载_ADO.Net连接Mysql

    首先下载一个mysql.data.dll拷贝到bin下面并引用一下 using MySql.Data.MySqlClient; class Program { static void Main(str ...

  3. MySQL 学习笔记(9)— 事务控制语句、事务属性以及并发和隔离级别

    1. 事务概念 事务处理(transaction processing)可以用来维护数据库的完整性,它保证成批的 MySQL 操作要么完全执行,要么完全不执行. 下面是关于事务处理需要知道的几个术语: ...

  4. 关于MySQL的四种事务隔离级别!

    本文实验的测试环境:Windows 10+cmd+MySQL5.6.36+InnoDB 一.事务的基本要素(ACID) 原子性(Atomicity):事务开始后所有操作,要么全部做完,要么全部不做,不 ...

  5. mysql show 原理_mysql事务的实现原理

    此篇文章算是对mysql事务的一个总结,基本把mysql事务相关的知识点都涵盖到了,面试问来问去无非也就是这些,在了解这些之前我们先对mysql在执行的过程中  有一个整体的认识,如下图 如上图所示, ...

  6. MySQL数据库中的事务(四大特性)

    1. 事务的介绍 事务就是用户定义的一系列执行SQL语句的操作, 这些操作要么完全地执行,要么完全地都不执行, 它是一个不可分割的工作执行单元. 2. 事务的四大特性 原子性(Atomicity) 一 ...

  7. mysql选什么隔离级别_互联网项目中mysql应该选什么事务隔离级别

    摘要 企业千万家,靠谱没几家. 社招选错家,亲人两行泪. 祝大家金三银四跳槽顺利! 引言 开始我们的内容,相信大家一定遇到过下面的一个面试场景 面试官:"讲讲mysql有几个事务隔离级别?& ...

  8. 数据库基础笔记(MySQL)6 —— 基础事务

    事务 只与 DML 语句有关 ( 关于数据的 增删改 ) 一个事务由一条或多条 DML 语句组成,一个事务在提交事务后才会将数据彻底修改到数据库中,再提交前,我们可以用回滚回到指定位置,相当于可以撤回 ...

  9. MySQL基础篇:事务管理

    事务 DCL 用来控制数据库的访问,包括如下 SQL 语句: GRANT:授予访问权限 REVOKE:撤销访问权限 COMMIT:提交事务处理 ROLLBACK:事务处理回退 SAVEPOINT:设置 ...

最新文章

  1. 【delphi】Byte数组与String类型的转换
  2. JAVA EXCEL API详解
  3. 李连杰年度巨作霍元甲主题曲:周杰伦唱
  4. selenium webdirver之ruby-开发ide安装
  5. SWT学生成绩管理系统
  6. 爬虫 requests 模块
  7. mysql服务器的搭建_基于linux的Mysql服务器的搭建
  8. Ubuntu 16.04 install Docker 1.12.0
  9. 蓝桥杯第五届JavaC组杨辉三角问题解决方法
  10. Zookeeper数据同步流程
  11. POI实现合并单元格
  12. java语言jsp技术_JavaWeb:JSP技术基础
  13. 200行代码实现推流到直播平台
  14. php获取openid 40163报错,微信网页授权 通过code获取openid 报错40163 code been used
  15. SSRF利用协议中的万金油——Gopher
  16. 将VBS脚本编译成加密版本的VBE脚本
  17. 杰奇php手机登陆自动跳转,杰奇cms电脑与手机自动判断跳转代码
  18. win32汇编 MASM03
  19. 临床试验中edc录入_临床试验中使用EDC的情况?
  20. 一个典型的神经网络包括,神经网络的应用实例

热门文章

  1. 重磅!清华这个决定冲上热搜!网友:不愧是清华…
  2. 3分钟了解物理学发展史
  3. 问答丨按量子力学来说,一个人撞墙,有多大概率能穿过去?
  4. 机器学习+深度学习相关课程地址总结
  5. (pytorch-深度学习系列)模型参数的初始化与访问操作-学习笔记
  6. 23种设计模式之门面模式
  7. sparksql一些指标
  8. java中stack集合框架
  9. const与define之间的区别?
  10. Docker 使用Dockerfile构建自己的docker服务(三)