分类

  • 软件天地

  • .net 中交易处理的解决方案‖
    的也是必须非常谨慎的去完
    系统崩溃,这就对我们的程
    心就是对数据库记录进行查询添
    成。在现有的程序中经常会有因
    序提出了一个数据操作的错误处
    加修改及删除操作,这是非常关键
    为某些错误而造成数据丢失甚至是
    理要求。

      例如在进行银行转帐处
    上加上相应的金额。如果一
    金额的步骤上出错了,那么
    .这是一个很危险的现像。
    错了,马上恢复数据至整个
    ,可以解决此类问题。
    理时,我们先从转出帐号减掉要
    切处理OK,我们的钱能顺利到达
    不但自已钱变少了,该收到的人
    解决办法就是要对数据操作的每
    操作前的原始状态。.NET中提出

    转出的金额,然后再在接收的帐号
    接收帐号。但要是系统在执行接收
    也没有收到,那笔钱就这样消失了
    一步都进行错误监控,一旦发现出
    了一个交易(Transaction)的观念


      我现在来用交易实现上面的例子:                                                

      string sql1 = "...";
      //在转出帐号上减去金额的
    处理SQL语句
      string sql2 = "...";  //在邮?br>帐号上加上金额的处理SQL语句
      SqlConnection conn = new SqlConn
    ection("...");  //建立数据库连接
      conn.Open();  //接开数据库连接                                
      SqlTransaction tran
    = conn.BeginTransaction(); 
    //开始进行交易处理
      SqlCommand comm = new SqlCommand();        
      comm.Connection = conn;                                
      comm.Transaction = tran;                              
      try                                                                        
      {                                                                            
      comm.CommandText = sql1;                              
      comm.ExecuteNonQuery();                                
      comm.CommandText = sql2;                              
      comm.ExecuteNonQuery();                                
      tran.Commit();  //接受交易,完成操作                        
      }catch                                                                  
      {                                                                            
      tran.Rollback();  //交易失败,恢复数据                    
      }                                                                            
      finally                                                                
      {                                                                            
      conn.Close();  //关闭数据库连接。                            
      }                                                                            

      其实还有另外一种方法也可以实现以
    方法(我想上种方法最终实现还是转换为
    过程,然后再用SqlCommand进行调用,这
    行数据库记录操作的多条SQL语句):
    上目标。在transaction-sql中也提供了交易处理的
    此方法实现的).我们可以把以上处理建立为一个存储
    个存储过程的主要的相关内容为(其中...处代表要进


      BEGIN TRANSACTION                                            
      ...                                                                        
      IF (@@ERROR > 0) ROLLBACK TRANSACTION

      ELSE COMMIT TRANSACTION                                



    上一页 下一页




    map