博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
事务处理笔记《一》ADO.NET级别的事务
阅读量:6007 次
发布时间:2019-06-20

本文共 1502 字,大约阅读时间需要 5 分钟。

现在我们对事务的概念和原理都有所了解了,并且作为已经有一些基础的C#开发者,我们已经熟知编写数据库交互程序的一些要点,即:

1)使用SqlConnection类的对象的Open()方法建立与数据库服务器的连接。

2)然后将该连接赋给SqlCommand对象的Connection属性。

3)将欲执行的SQL语句赋给SqlCommandCommandText属性。

4)通过SqlCommand对象进行数据库操作。

创建一个ADO.NET事务是很简单的,需要定义一个SqlTransaction类型的对象。SqlConnection OleDbConnection对象都有一个BeginTransaction 方法,它可以返回 SqlTransaction 或者OleDbTransaction 对象。然后赋给SqlCommand对象的Transcation属性,即实现了二者的关联。为了使事务处理可以成功完成,必须调用SqlTransaction对象的Commit()方法。如果有错误,则必须调用Rollback()方法撤销所有的操作。

 

事务处理程序的要点:

(1)创建事务

(2)事务与要处理的每条命令关联起来

(3)事务的提交与回滚

基于以上认识,下面我们就开始动手写一个基于ADO.NET的事务处理程序。                                         

string conString = "data source=127.0.0.1;database=codematic;user id=sa;password=";SqlConnection myConnection = new SqlConnection(conString);myConnection.Open();//启动一个事务SqlTransaction myTrans = myConnection.BeginTransaction();//为事务创建一个命令SqlCommand myCommand = new SqlCommand();myCommand.Connection = myConnection;myCommand.Transaction = myTrans;try{    myCommand.CommandText = "update P_Product set Name='电脑2' where Id=52";    myCommand.ExecuteNonQuery();    myCommand.CommandText = "update P_Product set Name='电脑3' where Id=53";    myCommand.ExecuteNonQuery();    myTrans.Commit();//提交    Response.Write("两条数据更新成功");}catch (Exception ex){    myTrans.Rollback();//遇到错误,回滚    Response.Write(ex.ToString());              }finally{    myConnection.Close();}

 

ADO.NET事务的优势和限制如下。

优势:

l  简单。

l  和数据库事务差不多快。

l  事务可以跨越多个数据库访问。

l  独立于数据库,不同数据库的专有代码被隐藏了。

限制:事务执行在数据库连接层上,所以需要在执行事务的过程中手动地维护一个连接。

 

注  意

所有命令都必须关联在同一个连接实例上,ADO.NET事务处理不支持跨多个连接的事务处理。

 

      选自一书 5.4 节。

 

转载地址:http://ersmx.baihongyu.com/

你可能感兴趣的文章
nginx 高并发配置参数(转载)
查看>>
vue-resourse将json数据输出实例
查看>>
PAT (Advanced Level) 1027. Colors in Mars (20)
查看>>
HDU 5798 Stabilization
查看>>
CodeForces 733C Epidemic in Monstropolis
查看>>
GTK+重拾--06 布局管理器学习
查看>>
nodePPT初认识启动与手机控制
查看>>
站点下的GridView的RowCommand事件的设置,与站点应用不一样
查看>>
初识springcloud
查看>>
session的存储方式和配置
查看>>
win 2008 安装 arcgis desktop 9.3.1 的问题
查看>>
POJ 1636 DFS+DP
查看>>
highcharts.js的时间轴折线图
查看>>
O(N)时间的排序
查看>>
Docker入门——image制作
查看>>
基于NIOS-II的示波器:PART4 系统调试&测试
查看>>
20145222黄亚奇《Java程序设计》第3周学习总结
查看>>
python学习------迭代器协议和生成器
查看>>
HDU 1584
查看>>
两个以上家庭路由器级联
查看>>