我们在开发软件过程中,一定会遇到这样的问题:我们在程序中要完成一个功能,这个功能需要改变三个对象的状态,但是程序在执行过程中出现了错误,只有两个对象的状态改变了,第三个对象的状态没有改变,这时候程序已经抛出异常执行结束了,执行结果不是我们想要的结果,并且这个结果是不可逆的。我们如何解决这种问题呢,这就是这篇文章将要叙述的重点----如何使用事务控制程序执行。
我相信大多数的程序员,对这个词还是很熟悉的,因为事务是学习数据库不可或缺的一部分。那么事务到底是什么玩意呢?我们先来了解一下数据库中的事务。
事务是数据库中单个逻辑工作单元执行的一系列操作,这一系列操作要么完全的执行,要么完全不执行,它是一个不可分割的工作单位。事务处理可以确保事务内部的操作都成功完成,否则不会更新数据,这样可以是程序更加的安全可靠。一个逻辑单元要想成为事务,必须要符合以下几个条件:原子性、一致性、隔离性、持久性。
数据库事务的特点,不就是我们开头问题的解决方案吗,那么事务如何在代码中使用呢?它和数据库事务的区别是什么?
Microsoft.netframework类库支持代码中事务的使用,我们只需要添加引用即可使用(以vb.net为例)。如图:
然后再需要使用的类中添加引用:
Imports System.Transactions就可以在类中使用了。事务代码示例如下:
Using scope As New TransactionScope Try '功能模块1 Dim BIrecharge As Integer Dim BI = Factory.Factory.GetFactory() BIrecharge = BI.CreateIRecharge.Add(enrecharge) '功能模块 2 Dim BIModify As Integer BIModify = BI.CreateIStudent.ModifyCash(enstudent) Return enstudent '提交事物 scope.Complete() Catch ex As Exception '出错以后自动回滚 End Try End Using
例子中,有两个功能模块,它们共同完成了某个功能,事务可以控制这两个步骤全部完成,或者什么都不做。
事务帮我们解决了数据不同步的问题,增强了程序的可靠性。
原文地址:http://blog.csdn.net/u010942465/article/details/41488473