阿宽

Nothing is more powerful than habit!
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

C# 使用事务

Posted on 2009-08-04 15:13  宽田  阅读(658)  评论(0编辑  收藏  举报
     事务可控制和维护事务中每个操作的一致性和完整性。具体说明可参考其它文章。
这里主要是说明在C#中执行事务的使用方法。其代码如下:

    /// <summary>
    
/// 执行事务
    
/// </summary>
    
/// <param name="sSqlList">一次执行的多条语句列表</param>
    public void RunOldDbTransaction(string[] sSqlList)
    {
        sConnectionString 
= ConfigurationManager.AppSettings.Get("UserConnection");
        OracleConnection ocConnection 
= new OracleConnection(sConnectionString);
        ocConnection.Open();
        
//创建并开启事务
        OracleTransaction oraTrans = ocConnection.BeginTransaction(IsolationLevel.ReadCommitted);
        OracleCommand ocCommand 
= ocConnection.CreateCommand();
        ocCommand.Transaction 
= oraTrans;
        
try
        {
            
//循环事务中语句
            foreach (string sVal in sSqlList)
            {
                ocCommand.CommandText 
= sVal;
                ocCommand.ExecuteNonQuery();
            }
            
//完成后确认事务
            oraTrans.Commit();
        }
        
catch (Exception ex)
        {
            
//出错后回滚事务
            oraTrans.Rollback();
            
throw ex;
        }
        
finally
        {
            ocConnection.Close();
        }
    }


注:SQL中用法
BEGIN TRANS
  
DECLARE @orderDetailsError int@productError int
  
//执行的语句1
  
DELETE FROM Order Details WHERE ID=111
  
//得到错误
  
SELECT @orderDetailsError = @@ERROR
  
//执行的语句2
  
DELETE FROM Products WHERE ProductID=112
  
//得到另外一个错误
  
SELECT @productError = @@ERROR
  
IF @orderDetailsError = 0 AND @productError = 0
    
COMMIT TRANS
  
ELSE
    
ROLLBACK TRANS
这种方法可以查阅相关sql server 帮助。