- 热门文章:
- · .net中一些所封装的类
- · .Net 下对SqlServer2000中的存储过程的调用
- · .Net 下对SqlServer2000中的存储过程的调用
- · .NET组件和COM组件之间的相互操作
- · 权限管理工具的使用方法
- · .net关于企业Excel报表的生成
- · .NET Test Driven Development
- · 使用 Visual C# .NET 向 Microsoft Excel 2002 传输 XML 数据
- · Remoting编程知识二
- · Remoting编程知识一
- · 在.net中轻松掌握Windows窗体间的数据交互
- · .NET里面的Interop太烂了
上一篇:关于自定义事件的一点体会 >>
.net 中的事务总结
create procedure AddInfo
(@studentname varchar(20),....)
as
begin transaction
insert ......
insert....
if .....
rollback transaction
update.....
.....
commit transaction
注:可以在存储过程中使用save transaction选择回滚的位置
2>数据库级别的事务处理。
需要导入Imports System.Data.SqlClient名称空间。
@#This function will add student@#s infomation and its parent@#s information concurrently !
@#So we should use transaction !
Public Shared Function InsertInfo(ByVal student As clsStudent, ByVal parent As clsParent) As Boolean
Dim success As Boolean = True
Dim cmdStudent As New SqlCommand("insert into student(name,sex,classname) values(@name,@sex,@classname)", cnn)
Dim cmdParent As New SqlCommand("insert into parent(name,sex,salary) values(@name,@sex,@salary)", cnn)
Dim cmdGetStudentid As New SqlCommand("select studentid from student where name=@name ", cnn)
Dim cmdGetParentid As New SqlCommand("select parentid from parent where name=@name", cnn)
Dim cmdStudentParent As New SqlCommand("insert into studentparent(studentid,parentid)values(@studentid,@parentid)", cnn)
cmdStudent.Parameters.Add("@name", student.Name)
cmdStudent.Parameters.Add("@sex", student.Sex)
cmdStudent.Parameters.Add("@classname", student.ClassName)
cmdParent.Parameters.Add("@name", parent.Name)
cmdParent.Parameters.Add("@sex", parent.Sex)
cmdParent.Parameters.Add("@salary", parent.Salary)
cmdGetStudentid.Parameters.Add("@name", student.Name)
cmdGetParentid.Parameters.Add("@name", parent.Name)
Dim transaction As SqlTransaction
Try
cnn.Open()
transaction = cnn.BeginTransaction
cmdStudent.Transaction = transaction
cmdParent.Transaction = transaction
cmdGetStudentid.Transaction = transaction
cmdGetParentid.Transaction = transaction
cmdStudentParent.Transaction = transaction
Dim studentid, parentid As Integer
cmdStudent.ExecuteNonQuery()
cmdParent.ExecuteNonQuery()
studentid = cmdGetStudentid.ExecuteScalar
parentid = cmdGetParentid.ExecuteScalar
cmdStudentParent.Parameters.Add("@studentid", studentid)
cmdStudentParent.Parameters.Add("@parentid", parentid)
cmdStudentParent.ExecuteNonQuery()
transaction.Commit()
Catch ex As Exception
transaction.Rollback()
success = False
MessageBox.Show(ex.Message)
Finally
cnn.Close()
End Try
Return success
End Function
3>页面级别的事务处理,也称com级别的事务。
需要导入Imports System.Data.Sqlclient和Imports System.EnterpriseServices
@#This function will add student@#s infomation and its parent@#s information concurrently !
@#So we should use transaction !
Public Shared Function InsertInfo(ByVal student As clsStudent, ByVal parent As clsParent) As Boolean
Dim success As Boolean = True
Dim cmdStudent As New SqlCommand("insert into student(name,sex,classname) values(@name,@sex,@classname)", cnn)
Dim cmdParent As New SqlCommand("insert into parent(name,sex,salary) values(@name,@sex,@salary)", cnn)
Dim cmdGetStudentid As New SqlCommand("select studentid from student where name=@name ", cnn)
Dim cmdGetParentid As New SqlCommand("select parentid from parent where name=@name", cnn)
Dim cmdStudentParent As New SqlCommand("insert into studentparent(studentid,parentid)values(@studentid,@parentid)", cnn)
cmdStudent.Parameters.Add("@name", student.Name)
cmdStudent.Parameters.Add("@sex", student.Sex)
cmdStudent.Parameters.Add("@classname", student.ClassName)
cmdParent.Parameters.Add("@name", parent.Name)
cmdParent.Parameters.Add("@sex", parent.Sex)
cmdParent.Parameters.Add("@salary", parent.Salary)
cmdGetStudentid.Parameters.Add("@name", student.Name)
cmdGetParentid.Parameters.Add("@name", parent.Name)
Dim transaction As SqlTransaction
Try
cnn.Open()
Dim studentid, parentid As Integer
cmdStudent.ExecuteNonQuery()
cmdParent.ExecuteNonQuery()
studentid = cmdGetStudentid.ExecuteScalar
parentid = cmdGetParentid.ExecuteScalar
cmdStudentParent.Parameters.Add("@studentid", studentid)
cmdStudentParent.Parameters.Add("@parentid", parentid)
cmdStudentParent.ExecuteNonQuery()
ContextUtil.SetComplete()
Catch ex As Exception
success = False
ContextUtil.SetAbort()
MessageBox.Show(ex.Message)
Finally
cnn.Close()
End Try
Return success
End Function
注:运用ContextUtil的静态方法SetComplete和SetAbort来提交和回滚。
下一篇:.net中一些所封装的类 >>
相关文章:
- · .NET中的设计模式五:观察者模式
- · .NET Framework 2.0 beta 新特性
- · 把.NET程序部署到没有安装.NET Framwork的机器上
- · 对使用net程序架构开发的一点点儿
- · 在.NET下获取硬盘序列号的问题
- · 在.net中Oracle日期类型的处理
- · 由C++转向C#:我们需要注意哪些方面的变化?
- · 如何保护我们的 .NET 程序集?
- · 初级:.net框架下的MD5
- · .net下软件的自动升级--上传
- · 针对 .NET 框架的安全编码指南
- · .NET框架类命名空间
- · .Net框架程序设计(一)----进阶
- · .NET中的设计模式二:单件模式
- · .Net的注册表操作
- · [GDI+] ColorMatrix 彩色矩阵
- · 在.NET中实现彩色光标,动画光标和自定义光标
- · .Net框架下的XSLT转换技术简介
- · NET Framework 工具
- · 充分利用 .NET 框架的 PropertyGrid 控件
- · 把.NET程序部署到没有安装.NET Framwork的机器上
- · ADO连接数据库字符串大全
- · 在 Visual C# .NET 中建立一个平滑的进度条
- · FlyTreeView for ASP.NET 3.1 破解手记
- · 如何检测电脑是否安装了.net framework
- · .Net平台下开发英文语音应用程序
- · 按照指定大小,生成缩略图
- · .net探针
- · .net分布式事务例子
- · 在 普通的文本框 里加入图片背景
- · 架构设计之首部曲
- · 实例讲解.NET中资源文件的创建与使用
- · NET环境下有关打印页面设置、打印机设置、打印预览对话框的实现(二)
- · .net入门常见问题
- · 简单代码的性能差异
- · .net中设置系统时间
- · 用.net操作word
- · 使用 Visual Studio .NET 重新分发 .NET 框架
