存储过程和.Net中使用事务的实例

it2022-05-09  34

1、SqlServer存储过程的事务处理方法一:--测试的表     create   table   tb(     id   int     not   null     constraint   PK_sys_zj_fielddict   primary   key             ,aa   int)         --事务处理     begin   tran     insert   into   tb   values(1,1)     if   @@error<>0   goto   lb_rollback     insert   into   tb   values(1,1)     if   @@error<>0   goto   lb_rollback     insert   into   tb   values(2,1)     if   @@error<>0   goto   lb_rollback     insert   into   tb   values(2,1)     if   @@error<>0   goto   lb_rollback     insert   into   tb   values(3,1)     if   @@error<>0   goto   lb_rollback     lb_commit:     commit   tran     goto   lb_ok     lb_rollback:     rollback   tran         --显示结果     lb_ok:     select   *   from   tb     drop   table   tb方法二:--创建测试表     create   table   tb(     id   int     not   null     constraint   PK_sys_zj_fielddict   primary   key             ,aa   int)         --设置选项     SET   XACT_ABORT   on         --事务处理     begin   tran     insert   into   tb   values(1,1)     insert   into   tb   values(1,1)     insert   into   tb   values(2,1)     commit   tran         --显示结果     /*--------注意             如果这样写的话,后面的语句不会被执行,如果要执行后面的语句,要在这句后面加上GO,仅查询分析分析器支持,所以如果是在存储过程中,要保证commit   tran后面没有其他语句,否则出错时,其他语句不会被执行     -----------*/     select   *   from   tb     drop   table   tb   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(); myCommand.CommandText = "Update table2 set dd='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(); }说明:在SqlServer中,每条Sql语句都作为一个事务来执行,所以无论在存储过程,还是在.net代码中使用,执行单条Sql语句没有必要使用事务处理

转载于:https://www.cnblogs.com/tuyile006/archive/2007/04/12/710753.html

相关资源:存储过程实例解释 事务实例解释 C#中使用带返回值的存储过程

最新回复(0)