C#中跨数据库增删改的事务控制
来源:互联网 发布:广告页设计软件 编辑:程序博客网 时间:2024/05/16 15:54
http://www.cnblogs.com/gossip/archive/2009/02/16/1392028.html
在程序的开发过程中,对数据库的增删改通常要用到事务,用来实现的全部更新和全部回滚。单数据库还比较好做,如果遇到同时操作多个数据库增删改,可以用下面的方法
一。TransactionScope类
TransactionScope类是framework2.0 新增的一个类,在System.Transactions命名空间中,使用时必须先添加System.Transactions引用;另外还要在windows控制面版-->管理工具-->服务-->Distributed Transaction Coordinator-->属性-->启动,启动这个服务.示例代码如下:
try { using (TransactionScope scope = new TransactionScope()) { //更新northwind数据库的Employees表 using (SqlConnection conOne = new SqlConnection("server=.;uid=sa;pwd=123;database=northwind")) { conOne.Open(); SqlCommand command = new SqlCommand("update Employees set lastname='chen' where employeeid='1'", conOne); int i = command.ExecuteNonQuery(); } //更新pubs数据库的jobs表 using (SqlConnection conTwo = new SqlConnection("server=.;uid=sa;pwd=123;database=pubs")) { conTwo.Open(); SqlCommand command = new SqlCommand("update jobs set job_desc='chen' where job_id='1'", conTwo); int i = command.ExecuteNonQuery(); } scope.Complete(); //提交事物 } } catch (Exception ex) //发生异常后自动回滚 { //throw; }
二。另一种方法就是建立两个事务,两个连接了。代码如下;
SqlConnection conNorthwind = new SqlConnection("server=.;uid=sa;pwd=123;database=northwind"); SqlConnection conPubs = new SqlConnection("server=.;uid=sa;pwd=123;database=pubs"); SqlCommand commandNorthwind = new SqlCommand(); SqlCommand commandPubs = new SqlCommand(); try { conNorthwind.Open(); conPubs.Open(); //更新northwind数据库的Employees表 SqlTransaction tranNorthwind = conNorthwind.BeginTransaction(); commandNorthwind.Connection = conNorthwind; commandNorthwind.Transaction = tranNorthwind; commandNorthwind.CommandText = "update Employees set lastname='chen' where employeeid='1'"; int i = commandNorthwind.ExecuteNonQuery(); //更新pubs数据库的jobs表 SqlTransaction tranPubs = conPubs.BeginTransaction(); commandPubs.Connection = conPubs; commandPubs.Transaction = tranPubs; commandPubs.CommandText = "update jobs set job_desc='chen' where job_id='1'"; int k = commandPubs.ExecuteNonQuery(); //throw new Exception(); //提交事务 commandNorthwind.Transaction.Commit(); conNorthwind.Close(); commandPubs.Transaction.Commit(); conPubs.Close(); } catch (Exception ex) { //回滚事务 if (commandNorthwind.Transaction != null && conNorthwind != null) { commandNorthwind.Transaction.Rollback(); conNorthwind.Close(); } if (commandPubs.Transaction!= null && conPubs != null) { commandPubs.Transaction.Rollback(); conPubs.Close(); } //throw; }
0 0
- C#中跨数据库增删改的事务控制
- C#中跨数据库增删改的事务控制
- C#跨库增删改事务控制
- C#中跨库增删改事务控制
- C# SQL数据库的基础增删改查和事务
- c#的数据库的增删改查
- 2.2 SQLite数据库的增删改查和事务
- iOS中数据库的增删改查
- c#中链接数据库的“增删改查”的通用方法
- C#中对数据库的基本操作(增删改以及调用存储过程)
- C#数据库事务控制
- (接上例)JPA中实现增删改查及事务控制
- 数据库中增删改查
- 使用JavaScript控制html中节点的增删改
- 对SQL数据库的增删改查C#代码
- C#对Access数据库的增删改查
- VS2008 C# Sql server2008 数据库的连接,增删改查
- C# Access数据库增删查改的简单方法
- 黑马程序员 改善C#编程的50个建议——属性
- CCS程序烧写软件设置步骤
- C语言条件编译及编译预处理阶段
- 浅谈邮件营销标题优化技巧
- ORA-12154: TNS: 无法解析指定的连接标识符
- C#中跨数据库增删改的事务控制
- 【转】编写Testbench的一些技巧
- 【桌面虚拟化】之七网络设计
- MVC interview questions with answers
- 黑马程序员 改善C#编程的50个建议——偏爱readonly而不是const
- 设计学习笔记
- Ping/Echo节点监测机制的实现
- MYSQL IFNULL函数的使用
- 【转】【学】如何写testbench---转载