事务处理

      事务是实现原子性的手段,原子性是指某些事情要么全部发生,要么都不发生,程序的执行是有顺序的,在程序的执行过程中,难免会出现错误,遇到突发事件,如电脑死机了,停电了等,如果对于某些必须作为原子性事务发生的事,在执行过程中,有一部执行了,还有另外一部分由于某种错误而没有执行,就会出现大麻烦。因此当某部分程序出现错误时需要执行该事务的回滚。

  测试:

  1.SQL查询分析器:

  i. create table MyTransactionTest
 (
   userId int primary key identity
 )

 

ii.

begin transaction  TranStart

insert into  MyTransactionTest default values
save transaction firstTransaction

 

insert into  MyTransactionTest default values
rollback transaction firstTransaction

 

insert into  MyTransactionTest default values
save transaction secondTransaction

 

insert into  MyTransactionTest default values
rollback transaction secondTransaction

 

insert into  MyTransactionTest default values
commit transaction TranStart

 

iii.

select * from MyTransactionTest

 

结果:

图片

 

2.VS2005

 

SqlConnection con = new SqlConnection("server=(local);DataBase=db;User ID=sa;PWD=");
con.Open();
SqlTransaction st = con.BeginTransaction();//通过SqlConnection的BeginTransaction方法创建名为st的对象Transaction
SqlCommand com = con.CreateCommand();
com.Transaction = st;//将SqlTransaction对象分配给SqlCommand对象的Transaction属性
try
 {       
                com.CommandText = "";     // 省略, 关于数据表的操作
                com.ExecuteNonQuery();
                //向日志表中插入数据
                com.CommandText = "";//   省略

                com.ExecuteNonQuery();
                st.Commit();//提交事物
                Response.Write("<script>alert('注册成功!');location='javascript:history.go(-1)'</script>");
     }
catch (Exception error)
    {
         st.Rollback();//回滚事物
    }

posted @ 2009-09-29 09:03  MYGIS_3  阅读(164)  评论(0编辑  收藏  举报