zoukankan      html  css  js  c++  java
  • C# 使用事务

         事务可控制和维护事务中每个操作的一致性和完整性。具体说明可参考其它文章。
    这里主要是说明在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 帮助。
  • 相关阅读:
    .NET 使用EF执行存储过程你知道几种?
    SQLserver 如何优雅的行转列
    SQLserver 如何获取近1月、近3个月、近6月数据
    三汇自动挂断问题:SIP兼容性,ACK检测,忽略ACK开启。
    几个flutter 开源项目测试
    Android versions for all users globally
    Using Flutter 2 on M1 MacOS Apple Silicon
    Educational Codeforces Round 111
    Wannafly挑战赛1
    摆烂记录
  • 原文地址:https://www.cnblogs.com/scottckt/p/1538515.html
Copyright © 2011-2022 走看看