使用System.Transactions
一。如何使用
System.Transactions 使用非常简单,下面是使用的代码
DEMO 1
using System.Collections.Generic;
using System.Text;
using System.Transactions;
using System.Data.SqlClient;
namespace TestTransactions
{
class Transactions
{
private void UseTransactions()
{
using (TransactionScope tran = new TransactionScope())
{
using (SqlConnection conn = new SqlConnection("server=.;database=Northwind;uid=sa;pwd=sa"))
{
string strInert = "insert into table1(name,password) values('ilahsa','123456')";
string strUp = "update table1 set password='654321' where name = 'ilahsa'";
SqlCommand cmd1 = new SqlCommand(conn, strInert);
cmd1.ExecuteNonQuery();
SqlCommand cmd2 = new SqlCommand(conn, strUp);
cmd2.ExecuteNonQuery();
}
tran.Complete();
}
}
}
}
首先声明一个TransactionScope 的实例,把需要事务处理的代码放在Using的语句块,这段代码封装了连个SQL 指令,只要其中有一个执行过程中发生异常,TransactionScope 对象会自动回滚事务,代码正常执行的话, tran.Complete()语句提交了事务。DEMO1中使用了两个Using 语句,代码执行完毕会自动释放资源(比较推荐这种方式),看到了吗,使用 System.Data.SqlClient处理事务是如此的简单,只需几行代码就搞定了
二.事务的设置
TransactionScopeOptions | 描述 |
Required | 如果已经存在一个事务,那么这个事务范围将加入已有的事务。否则,它将创建自己的事务。 |
RequiresNew | 这个事务范围将创建自己的事务。 |
Suppress | 如果处于当前活动事务范围内,那么这个事务范围既不会加入氛围事务 (ambient transaction),也不会创建自己的事务。当部分代码需要留在事务外部时,可以使用该选项。 |
--------------------------------------------------------------------------------
使用TransactionScopeOptions可以改变TransactionScope的默认事务类型 (默认的事务类型是Required)。
使用方法
DEMO2
{
using (SqlConnection conn1 = new SqlConnection(str))
{
SqlCommand cmd = new SqlCommand(conn1, strsql1);
cmd.ExecuteNonQuery();
}
using (SqlConnection conn2 = new SqlConnection(conn2))
{
SqlCommand cmd = new SqlCommand(conn2, strsql2);
cmd.ExecuteNonQuery();
}
ts.Complete();
}
三。 什么时候使用System.Transactions
第一中情况是,你的数据库支持轻型事务,何为轻型事务MSDN上有很明确的介绍,在这里就不多说了,也就是你的数据库是SQL SERVER 2005.
第二种情况是你的事务中使用了分布式的数据库系统。即在一个事务处理中使用了多个数据库。使用System.Transactions也会使性能有很大的提升。
如果数据库是SQL SERVER 2000,而又只连接一个数据库的话,使用ado.net 的事务处理更有优势。
转载于:https://www.cnblogs.com/jhxk/articles/1666099.html
使用System.Transactions相关推荐
- System.Transactions介绍
在.Net Framework 2.0中,新增了一个名称空间:System.Transactions.从其名字就可以看出来,里面包含了Transaction相关的类.System.Transactio ...
- System.Transactions深入了解
System.Transactions框架包含了一个称为LTM(Lightweight Transaction Manager)的TM,它隐式的将连接登记于事务中,从内部来看,是由ITransacti ...
- “System.Transactions.Diagnostics.DiagnosticTrace”的类型初始值设定项引发异常。
"System.Transactions.Diagnostics.DiagnosticTrace"的类型初始值设定项引发异常. 参考文章: (1)"System.Tran ...
- System.Transactions:实现你自己的Resource Manager
By Sahil Malik[http://www.developer.com/net/net/article.php/11087_3565196_1] .net 2.0所带来最大的变化之一也许就是S ...
- 谈谈分布式事务之三: System.Transactions事务详解[下篇]
在前面一篇给出的Transaction的定义中,信息的读者应该看到了一个叫做DepedentClone的方法.该方法对用于创建基于现有Transaction对 象的"依赖事务(Depende ...
- System.Transactions事务超时设置
System.Transactions 有2个超时属性(timeout 与 maxTimeout),可以通过配置文件来进行设置. 1. timeout System.Transactions 默认的t ...
- 读书笔记:《亮剑 .Net》——System.Transactions 事务处理
使用System.Transactiions不需要考虑是简单事务还是分布式事务. 在SQL Server 2005下.Net会创建一个Local Transaction,性能非常高.但是如果是SQL ...
- System中不存在类型或命名空间名称Transactions
添加引用 System.Transactions.dll 在web.config的<assemblies>节点加 <add assembly="System ...
- system.exception所有子类详解
一直以来写代码抛出的异常都用的exception,从来没有像书上教的那样具体可能是啥异常就抛对应的异常,最后才说用的exception异常类抛异常.前段时间整理代码的时候突然感觉好像从来也就没有对异常 ...
最新文章
- 华人首位!许晨阳获2021年美国数学会代数领域最高奖
- Xilinx 学习笔记1---新建工程和创建源代码文件
- 计算机组成原理 — 异构计算
- SAP 取月度期初库存和月度期末库存(历史库存)
- javascript面试_在编码面试中需要注意的3个JavaScript问题
- ES6学习笔记(三)—— Set 和 Map
- 【今日CS 视觉论文速览】11 Dec 2018
- mysql三表联合更新_mysql三表连接update
- php order by 3-- 没反应,Thinkphp 无法使用-)order() 排序的两种解决办法!
- linux在哪里储存变量值,关于linux:在bash中,如何在变量中存储返回值?
- 深度神经网络调参经验
- Scratch3.0 保存缩略图
- 数据库学习-关于存在量词exists的理解
- python编写贪吃蛇大战_用Python实现贪吃蛇双人大战
- 2022软件测试校招笔试题-软件测试基本理论
- app store android退款,iPhone8手机购买的app应用怎么退款?苹果8购买的app退款方法步骤...
- UVA 10306 e-Coins (二维背包)
- [2012山东ACM省赛] Fruit Ninja II (三重积分,椭球体积)
- 网站性能优化之_页面静态化
- 2021华数杯C题总结
热门文章
- JZOJ 1319. 邮递员
- python 闭包_一篇文章读懂Python的闭包与装饰器!
- 基于STM32系列芯片的 IAP实现的探索
- aba会导致问题_护发素会导致掉发?这个纠结多年的问题,真相原来是这回事
- python 播放视频 ftp_利用Python快速搭建HTTPFTP服务器
- CVPR 2020 《12-in-1: Multi-Task Vision and Language Representation Learning》论文笔记
- 双眼融合训练一个月_视觉融合你知道多少
- python测试网站功能_Python检测网站链接是否已存在
- 客户端相关知识学习(三)之Android原生与H5交互的实现
- 使用shell进行mvn打包,根据mvn是否打包成功来进行下一步操作