首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

考试系统之事宜

2013-03-21 
考试系统之事务事务在当初学习VB.NET时已经接触,但是迟迟没有使用,正好遇到考试系统这次锻炼机会,趁机使用

考试系统之事务

    事务在当初学习VB.NET时已经接触,但是迟迟没有使用,正好遇到考试系统这次锻炼机会,趁机使用了一把。

事务

    事务(Transaction)是访问,更新数据库中的一个程序执行单元。事务通常由数据库语言或程序的执行所引起,事务由事务开始(begin transaction)和事务结束(end transaction)之间执行的全体操作组成。
    事务是恢复和并发控制的基本单位,事务应该具有4个属性:原子性、一致性、隔离性、持久性,这四个属性通常称为ACID特性。

原子性(atomicity),一个事务是一个不可分割的工作单位,事务中包括的多个操作,要么都做,要么都不做。一致性(consistency),事务必须是使数据库从一个一致性状态变到另一个一致性状态,一致性与原子性是密切相关的。隔离性(isolation),即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。持久性(durability),指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。接下来的其他操作或故障不应该对其有任何影响。连接

    好吧,说的有点复杂,事务的目的很简单:你要做一系列的事,要么一口气全部完成;如果中间任何一项出错,大家全部恢复事务前的状态,话说有点“同生共死”的感觉。

    不过这个恢复到以前的状态说的有点扯,并不是所有的都能恢复,我在文本框中输入了一些文字,点击按钮触发了一个事务,事务失败了,文本框自动清空了?当然不是,此处的“恢复”指的是对数据库操作的数据恢复。

    咱接着说,既然是对数据库的恢复,必然离不开与SQL连接的关联,对,在C#编程语言中,谁和谁组成事务的依据就是数据库连接,也就是C#中的SqlConnection。

C#下的事务        考试系统中涉及到成绩转移,既然转移,必然涉及到数据的插入和删除两个步骤,所以在此处使用事务:当在历史表中插入某一条成绩数据成功时,在原数据表中删除该条记录。    因为UI层仅仅是传递一些实体数据,SqlHelper类也只是抽象出对数据库的一些操作,所以次数省略UI层类和SqlHelper类。BLL层

        转移分数逻辑:先插入再删除。

USE BasicDataSystemSET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGO-- =============================================-- Author:<李达>-- Create date: <2013年3月17日>-- Description:<成绩转移>-- =============================================CREATE PROCEDURE Proc_MoveScores-- 声明学号变量   @StudentCode varchar(50)ASBEGIN-- 启动事务BEGIN TRAN--添加一条成绩到历史表INSERT INTO TEH_ScoresHistory (StudentId) VALUES (@StudentCode)--删除该原成绩DELETE FROM TEB_Scores  WHERE StudentId =@StudentCode    --出现错误则回滚if @@ERROR <>0ROLLBACK TRAN--否则提交事务ELSECOMMIT TRANENDGO

总结

    当然这个事务例子比较简单,参与的逻辑也比较少,但是"麻雀虽小五脏俱全",再复杂的事务也是基于简单之上。

    把握不变的,其它任它变。


2楼xiaoxian8023昨天 19:35
事务太重要了
Re: lidaasky昨天 19:35
回复xiaoxian8023n尤其是数据必须一致时
1楼hobbbyxosjycgeyl昨天 10:03
呵呵
Re: lidaasky昨天 12:32
回复hobbbyxosjycgeyln这个……

热点排行