首页 > 代码库 > 如何使用事务控制程序执行

如何使用事务控制程序执行

         我们在开发软件过程中,一定会遇到这样的问题:我们在程序中要完成一个功能,这个功能需要改变三个对象的状态,但是程序在执行过程中出现了错误,只有两个对象的状态改变了,第三个对象的状态没有改变,这时候程序已经抛出异常执行结束了,执行结果不是我们想要的结果,并且这个结果是不可逆的。我们如何解决这种问题呢,这就是这篇文章将要叙述的重点----如何使用事务控制程序执行。

        我相信大多数的程序员,对这个词还是很熟悉的,因为事务是学习数据库不可或缺的一部分。那么事务到底是什么玩意呢?我们先来了解一下数据库中的事务。

        事务是数据库中单个逻辑工作单元执行的一系列操作,这一系列操作要么完全的执行,要么完全不执行,它是一个不可分割的工作单位。事务处理可以确保事务内部的操作都成功完成,否则不会更新数据,这样可以是程序更加的安全可靠。一个逻辑单元要想成为事务,必须要符合以下几个条件:原子性、一致性、隔离性、持久性。

         数据库事务的特点,不就是我们开头问题的解决方案吗,那么事务如何在代码中使用呢?它和数据库事务的区别是什么?

          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

         例子中,有两个功能模块,它们共同完成了某个功能,事务可以控制这两个步骤全部完成,或者什么都不做。

        事务帮我们解决了数据不同步的问题,增强了程序的可靠性。




如何使用事务控制程序执行