事务及-保存点的应用


1、.Net中创建事务的结构

SqlConnection   sqlConnection   =   new   SqlConnection();   
  ...初始化连接   
  //   开启事务   
  SqlTransaction   sqlTransaction   =   sqlConnection.BeginTransaction();   
  //   将事务应用于Command   
  SqlCommand   sqlCommand   =   new   SqlCommand();   
  sqlCommand.Connection   =   sqlConnection;   
  sqlCommand.Transaction   =   sqlTransaction;     
  try   
  {   
  //   利用sqlcommand进行数据操作   
  ...   
  //   成功提交   
  sqlTransaction.Commit();   
  }   
  catch(Exception   ex)   
  {   
  //   出错回滚   
  sqlTransaction.Rollback();   
  }  

2、.Net中简单例子

protected void 事务处理()
    {
        SqlConnection cnn = new SqlConnection(conStr);
        SqlCommand com = new SqlCommand();
        com.Connection = cnn;
        cnn.Open();
        SqlTransaction trans = cnn.BeginTransaction();//开启事务
        com.Transaction = trans;//将事务应用于Command 对象之中
        try
        {
            com.CommandText ="insert into test values('1','11')";
            com.CommandText +="insert into test values('1','22')";
            com.ExecuteNonQuery();
            trans.Commit();//提交事务
        }
        catch
        {
            trans.Rollback();//事务回滚
        }
        finally
        {
            cnn.Close();
            trans.Dispose();
            cnn.Dispose();
        }
    }

3、SQl server中的事务例子

begin tran --开始执行事务

insert into shop_Rebate values('a',0,0,'b')
insert into shop_Rebate values('a',0,0,'c'4)

if @@error<>0 --判断如果两条语句有任何一条出现错误
begin
    rollback tran --开始执行事务的回滚,恢复的转账开始之前状态
end 
else
begin
    commit tran --执行这个事务的操作
end

4、注意

  1。事务必须在连接打开后BeginTransaction();

  2.事务添加到SqlCommand(sqlCommand.Transaction   =   sqlTransaction;   )

  3、其他数据库对应做相应调整

  4、可以用微软提供的一个dll,很方便.




---------------------

declare @i int,@kvarchar(50)

set @i=1

while @i<=5

begin

    begin tran

       save tran pigOneIn --加入保存点

       set @k=@i

       if(@i=3)

           set @k='99999999999999999999'

       insert into lives(Eat,Play,Numb)values('iii','足球',@i)

       insert into lives(Eat,Play,Numb)values('kkk','足球',@k)

    if(@@error=0)

       commit tran

    else

       begin

           rollback tran pigOneIn

           commit tran

       end

set @i=@i+1

end


下文写的还比较详细

http://www.cnblogs.com/knowledgesea/p/3714417.html



你可能感兴趣的:(事务及-保存点的应用)