存储过程事务:
CREATE PROCEDURE tran1
as
begin tran
insert into trantest(字段1,字段2)values(1,'1')
if(@@error<>0)
rollback tran
else
begin
insert into trantest(字段1,字段2)values(2,'2')
if(@@error<>0)
rollback tran
else
commit tran
end
GO
或者
CREATE PROCEDURE tran1
as
declare @temp int
set @temp=0
begin tran
insert into trantest(字段1,字段2)values(1,'1')
@temp=@temp+@@error //@@error是系统变量,如果上一句SQL语句出错的话,就为1,默认为0
insert into trantest(字段1,字段2)values(2,'2') if(@@error<>0)
@temp=@temp+@@error
if(@@error<>0)
rollback tran
else
commit tran
end
GO
ADO.Net事务:
SqlConnection conn=new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["conn"]);
SqlCommand cmd1=new SqlCommand("Insert Into trantest (字段1,字段2)values(1,'1')",conn);
SqlCommand cmd2=new SqlCommand("Insert Into trantest (字段1,字段2)values(2,'2')",conn);
conn.Open();
SqlTransaction tran=conn.BeginTransaction();
cmd1.Transaction=tran;
cmd2.Transaction=tran;
try
{
cmd1.ExecuteNonQuery();
cmd2.ExecuteNonQuery();
tran.Commit();
}
catch(SqlException except)
{
tran.Rollback();
Response.Write(except.Message);
}
finally
{
conn.Close();
}
ASP.Net页面级事务:
这个比较简单,不用链接数据库只是三行代码
添加引用System.EnterpriseServices.dll
using System.EnterpriseServices;
try
{
数据库操作1;
数据库操作2;
ContextUtil.SetComplete();
}
catch(System.Exception except)
{
ContextUtil.SetAbort();
}
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/pgameli/archive/2009/05/12/4170906.aspx