个人重构版机房收费系统事务的使用
来源:互联网 发布:淘宝上有没有微信号卖 编辑:程序博客网 时间:2024/05/22 01:57
虽然不是第一次做机房收费系统,对于机房收费系统需求也都了解,但是如果要做出让自己满意的机房收费系统就够费脑筋啊。一个事务弄的我整了好长时间。
事务(Transaction):将彼此相关的多项操作合并成一个逻辑单元,以便于确保这些操作要么全部执行,要么全不执行。
在ADO.NET使用事务时,sqlconnection和 oledbconnection对象都包含一个beginTransaction方法,他能够返回sqlTransaction或者oledbTransaction。事务对象拥有commit和rollback方法来管理应用程序中的事务。
执行事务的步骤:(这里以sql数据库为准)
(1)调用连接对象的beginTransaction方法,将返回值赋给一个sqlTransaction类型的变量
例如:dim myTrans as (new) SqlTransaction
Dim conn as new sqlconnection
myTrans=conn.beginTransaction()
(2)为要在事务中执行的所有对象设置Transaction属性来引用事务对象。
Dim cmd as sqlcommand
Cmd.Transaction=myTrans
(3)执行必要的命令对象。
(4)如果命令完成,则调用事务对象的commit方法。如果发生任何问题,则调用rollback会滚到初始条件
下面是我对机房收费系统DLL层的代码使用事务的情况(学生注册)界面如下:
我自己设计的数据库中对于学生注册,我建立了两个表:stuInfo 和 cardInfo 这两个表,所以我是用事务对两个表添加学生信息(能够添加就同时添加,不能添加就都不要添加,这就是我使用事务的本意。)
具体D层代码如下:
Imports System.Data.SqlClientPublic Class StuRegistDAL : Implements IDAL.IRegister '注册 Public Function Register_IDAL(ByVal cardInfo As Entity.CardInfoEntity, ByVal stuInfo As Entity.StuInfoEntity) As Boolean Implements IDAL.IRegister.Register_IDAL '定义字符串 Dim str As String = "Data Source=192.168.24.76;Initial Catalog=Charge_System;uid=sa;Pwd=123456" '实例化conn并使用构造函数初始化conn Dim conn As New SqlClient.SqlConnection(str) '定义 事务类型的变量 Dim myTrans As SqlTransaction '实例化 Sqlcommand 类 Dim cmd As New SqlCommand '注册 Try '打开数据库 conn.Open() '调用sqltransaction的beginTransaction方法来开始一个本地事务,并将返回的sqlTransaction对象赋给Tstrans myTrans = conn.BeginTransaction '将conn对象和cmd相关联 cmd.Connection = conn '将myTrans对象和 cmd相关联 cmd.Transaction = myTrans Dim sql As String = "Insert Into T_CardInfo ( cardno,cash,registerdate,registertime,ischeck,userid ) " & _ " values ( '" & cardInfo.cardno & "','" & cardInfo.cash & "','" & Date.Today & "', '" & TimeOfDay & "','" & cardInfo.ischeck & "','" & cardInfo.userid & "') " '将cmd对象和Tstrans对象相关联 cmd.CommandText = sql cmd.ExecuteNonQuery() '给学生表添加学生表的信息 sql = " insert into T_StuInfo (stuno,cardno,stuname,sex,stuclass,grade,department ) " & _ "values ( '" & stuInfo.stuno & "','" & stuInfo.cardno & "','" & stuInfo.stuname & "','" & stuInfo.sex & "','" & stuInfo.stuclass & "','" & stuInfo.grade & "','" & stuInfo.department & "' )" cmd.CommandText = sql cmd.ExecuteNonQuery() myTrans.Commit() Return True Catch ex As Exception '事务对象置空 myTrans = Nothing '让事务回滚 myTrans.Rollback() '返回 false 其他层,根据该返回值 判断注册的与否 (如果false 当然是没有注册成功) Return False End Try End FunctionEnd Class
这样的话就能够保证两个数据表同时添加数据。
- 个人重构版机房收费系统事务的使用
- 个人重构机房收费系统SqlHelper的使用
- 机房收费系统中“事务”的应用
- 个人机房收费系统总结
- 机房收费系统报表的使用
- 机房收费系统之触发器的使用
- 【机房收费系统】DataGridView控件的使用
- 【机房收费系统】之触发器的使用
- 机房收费系统-MSFlexGrid控件的使用
- 机房收费系统之模块的使用
- 个人重构机房收费系统报表使用之最简单的显示连接
- 机房收费系统个人重构版(一)
- 机房收费系统个人重构版:暮然回首,灯火阑珊
- 机房收费系统中的事务(二)
- 机房收费系统的图
- 机房收费系统的完结
- 机房收费系统的准备工作
- 机房收费系统重构版:照葫芦画瓢
- 手把手教你如何识别钓鱼网站
- Ajax中使用Json传递数据
- Android_SharedPreferences用户偏好设置
- UVA 11384 - Help is needed for Dexter
- Linux 下的定时器使用
- 个人重构版机房收费系统事务的使用
- 常用Windows消息、常量命名参考
- protected访问权限
- How to import existing projects into TFS Visual Studio with GIT ?
- MFC寻找按钮事件
- android中非aidl实现进程间通信(编写顺序的parcel写入与读出)
- 求1000的阶乘
- 无人值守安装
- android 基础知识 八