zoukankan      html  css  js  c++  java
  • 事务

    事务    

    一个操作集合:一系列操作 要么全部成功,要么全部失败,例如:银行转账A=》B,两部分  一:提出A,二:放入B  ;要么同时成功,要么同时失败
    事务管理器

    数据参与到事务运作当中,我们把管理这些数据的工具称为资源管理器 RM,TM事务管理器   协调多个管理器的工作,保证程序正确运行

         事务管理器分类

    核心 事物管理器KTM  
    轻量级事物管理器LTM 在System.Transactions里的一个管理框架,管理单个程序域,管理多个易变的RM,但只能管理一个持久化的RM,性能最高的事物管理器
    分布式事务协调器(DTC)  

           System.Transactioins.Transaction类

        

      //
            // 摘要:
            //     获取或设置环境事务。
            //
            // 返回结果:
            //     描述当前事务的 System.Transactions.Transaction。
            public static Transaction Current { get; set; }
            //
            // 摘要:
            //     获取事务的隔离级别。
            //
            // 返回结果:
            //     System.Transactions.IsolationLevel 值之一,该值指示事务的隔离级别。
            public IsolationLevel IsolationLevel { get; }
            //
            // 摘要:
            //     检索有关某个事务的附加信息。
            //
            // 返回结果:
            //     包含有关某个事务的附加信息的 System.Transactions.TransactionInformation。
            public TransactionInformation TransactionInformation { get; }

    主要方法

       //
            // 摘要:
            //     指示事务已完成。
            //
            // 异常:
            //   T:System.ObjectDisposedException:
            //     尝试在已处置的事务上订阅此事件。
            public event TransactionCompletedEventHandler TransactionCompleted;
    
            //
            // 摘要:
            //     创建事务的克隆。
            //
            // 返回结果:
            //     一个 System.Transactions.Transaction 作为当前事务对象的副本。
      //
            // 摘要:
            //     回滚(中止)事务。
            public void Rollback();
            //
            // 摘要:
            //     回滚(中止)事务。
            //
            // 参数:
            //   e:
            //     有关发生回滚的原因的说明。
            public void Rollback(Exception e);

    事务使用

    public void Execute(string connectionString)
            {
                using (SqlConnection connection = new SqlConnection(connectionString))
                {
                    connection.Open();
                    SqlCommand cmd = new SqlCommand();
                    SqlTransaction transaction = null;
                    transaction = connection.BeginTransaction("SampleTransaction");
                    cmd.Connection = connection;
                    cmd.Transaction = transaction;
                    try
                    {
                        cmd.CommandText = "";
                        cmd.ExecuteNonQuery();
                        transaction.Commit();
                    }
                    catch
                    {
                        transaction.Rollback();
                    }
    
    
                }
            }
  • 相关阅读:
    java利用Scanner获取键盘输入
    实验四:数据类型与运算符 4、运算符及表达式实训
    实验三:数据类型与运算符 4、运算符及表达式实训
    Java运算符优先级
    laravel jobs 进程
    安装laravel horizon进程管理
    layui导出表格
    layui无限级分类
    Linux中基本命令
    gogs git 部署服务端钩子 自动发布项目
  • 原文地址:https://www.cnblogs.com/dh2014/p/5379098.html
Copyright © 2011-2022 走看看