在程序的开发过程中,对数据库的增删改通常要用到事务,用来实现的全部更新和全部回滚。单数据库还比较好做,如果遇到同时操作多个数据库增删改,可以用下面的方法
一。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; }
相关推荐
自己实现的的asp.net对数据库基本操作
ASP.NET MVC Linq to SQL 实现数据库增删改(源代码)ASP.NET MVC Linq to SQL 实现数据库增删改(源代码) ASP.NET MVC 分页控件
c#调用MySQL数据库增,删,改,查
C#对Oracle数据库的增加,删除,修改,基本语句,非常适合初学者,里面还有一个数据绑定,同时我又增加了一个刷新按钮,随时查看数据库中的信息。
C#连接sql数据库执行简单的增删改查操作 有很强的参考实用价值,适合初学者
一个专门实现sql server数据库的增删改查,以及将查询的结果返回成表格等功能,分享代码如下 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data....
C#连接数据库实现删改查代码,但是没有实现增加功能___
C#连接数据库实现删改查代码,但是没有实现增加功能___
在C#中使用控件DataGridView实现数据库增删改查
C#winform中直接操作datagridview对数据库数据进行增删改查
使用C#对数据库的基本操作,适合初学者,希望大家共同进步!
c#访问access数据库c#访问access数据库c#访问access数据库c#访问access数据库
在C#中创建数据库
c#窗体模式下对用封装的方式对表格内容实现增删改操作,新手可以学一下.里面附有数据库文件及使用说明。已经通过测试。可以学习下
C#中的事务处理例子程序,适合初学者,可以直接用,在数据库的同步控制上很有用
在C#控制台下,实现数据增、删、改功能。
C# 操作PostgreSQL 数据库 .
很具代表性的代码,C#连接数据库并实现增删改查功能。
c# 动态获得数据库中所有查询和视图 c# 视图信息 c# 存储过程信息
C# 实现对数据的增删改,数据源是XML