Sqlserver 和.net中的事务

转载 2012年03月25日 15:37:57

Sqlserver 存储过程中结合事务的代码实例

--本人多采用方式二:

--方式一
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[USP_ProcedureWithTransaction_Demo]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[USP_ProcedureWithTransaction_Demo]
GO
-- =============================================
-- Author: <ChengXiaoming>
-- Create date: <2010-06-11>
-- Description: <Demo:存储过程中使用事务>
-- =============================================
Create PROCEDURE [dbo].[USP_ProcedureWithTransaction_Demo]
As
Begin
SET XACT_ABORT ON
Begin Transaction
Insert Into Lock(LockTypeID) Values('A')--此语句将出错,LockTypeID为Int类型
Update Lock Set LockTypeID = 2 Where LockID = 32
Commit Transaction
SET XACT_ABORT OFF
End
GO

--方式二
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[USP_ProcedureWithTransaction_Demo]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[USP_ProcedureWithTransaction_Demo]
GO
-- =============================================
-- Author: <ChengXiaoming>
-- Create date: <2010-06-11>
-- Description: <Demo:存储过程中使用事务>
-- =============================================
Create PROCEDURE [dbo].[USP_ProcedureWithTransaction_Demo]
As
Begin
Begin Transaction
Insert Into Lock(LockTypeID) Values('A')--此语句将出错,LockTypeID为Int类型
Update Lock Set LockTypeID = 1 Where LockID = 32
Commit Transaction
If(@@ERROR <> 0)
Rollback Transaction
End
GO

--方式三
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[USP_ProcedureWithTransaction_Demo]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[USP_ProcedureWithTransaction_Demo]
GO
-- =============================================
-- Author: <ChengXiaoming>
-- Create date: <2010-06-11>
-- Description: <Demo:存储过程中使用事务>
-- =============================================
Create PROCEDURE [dbo].[USP_ProcedureWithTransaction_Demo]
As
Begin
Begin Try
Begin Transaction
Update Lock Set LockTypeID = 1 Where LockID = 32--此语句将出错,LockTypeID为Int类型
Insert Into Lock(LockTypeID) Values('A')
Commit Transaction
End Try
Begin Catch
Rollback Transaction
End Catch
End
GO

2,.Net中使用事务处理
SqlConnection myConnection = new SqlConnection("Data Source=localhost;Initial Catalog=Northwind;Integrated Security=SSPI;");
myConnection.Open();

SqlTransaction myTrans = myConnection.BeginTransaction(); //使用New新生成一个事务
SqlCommand myCommand = new SqlCommand();
myCommand.Transaction = myTrans;

try
{
myCommand.CommandText = "Update Address set location='23 rain street' where userid='0001'";
myCommand.ExecuteNonQuery();
myTrans.Commit();
Console.WriteLine("Record is udated.");
}
catch(Exception e)
{
myTrans.Rollback();
Console.WriteLine(e.ToString());
Console.WriteLine("Sorry, Record can not be updated.");
}
finally
{
myConnection.Close();
}


相关文章推荐

基于VB.NET的办公事务管理系统

  • 2014年02月22日 18:54
  • 3.7MB
  • 下载

Asp.net中Web.config连接字符串及配置数据库sqlserver

近日正在看Asp.net,看到Web.config有很不清楚之处,特意从网络、MSDN搜集、归纳和整理,供大家分享。 在ASP.NET的web.config中,可以用两种方式来写连接字符串的配置。 ...
  • hbqhdlc
  • hbqhdlc
  • 2012年11月07日 00:04
  • 35876

ASP.NET事务和异常处理 PDF

  • 2007年06月12日 13:40
  • 199KB
  • 下载

(喷血分享)利用.NET生成数据库表的创建脚本,类似SqlServer编写表的CREATE语句

在我们RDIFramework.NET代码生成器中,有这样一个应用,就是通过数据库表自动生成表的CREATE语句。 在实现此功能前摸索了很多方法,最后借助MSSQLSERVER自带的dll文件来完成,...

Asp.Net事务和异常处理 (一)

  • 2009年02月26日 11:39
  • 62KB
  • 下载

Asp.Net事务和异常处理 (三)

  • 2009年02月26日 11:41
  • 79KB
  • 下载

VB.NET访问SQLServer数据库

用vb6.0编写收费系统,用的是ADODB(Active Data Objects Data Base)+Recordset,而在vb.net中用的是SqldataAdapter、SqldataRea...
  • lidaasky
  • lidaasky
  • 2012年02月09日 16:04
  • 15456
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Sqlserver 和.net中的事务
举报原因:
原因补充:

(最多只允许输入30个字)