asp.net 事务

    技术2022-05-20  49

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

    Posted on 2007-04-12 15:30 小y 阅读(821) 评论(0) 编辑 收藏  

    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(); }http://www.cnblogs.com/tuyile006/archive/2007/04/12/710753.html说明:在SqlServer中,每条Sql语句都作为一个事务来执行,所以无论在存储过程,还是在.net代码中使用,执行单条Sql语句没有必要使用事务处理


    最新回复(0)