zoukankan      html  css  js  c++  java
  • 事务 代码

    Action<Transaction, string> action = (t, str) =>
    {
    SqlConnection con
    = new SqlConnection("server=.;uid=sa;pwd=chen;database=pubs");
    con.Open();
    if(null != con)
    con.EnlistTransaction(t);
    string strSql = "insert into test values('" + str + "','zzz','zzz')";
    SqlCommand cmd
    = new SqlCommand(strSql, con);
    Console.WriteLine(cmd.ExecuteNonQuery());
    con.Close();
    };

    using(CommittableTransaction ctran =new CommittableTransaction())
    {
    try
    {
    action(ctran,
    "123645");
    ctran.Commit();
    }
    catch(Exception ex)
    {
    Console.WriteLine(ex.Message);
    ctran.Rollback();
    }
    }

    //依赖事务处理

    Action
    <object> DepAction= t =>
    {
    DependentTransaction de
    = t as DependentTransaction;
    action(de, DateTime.Now.Second.ToString());
    Thread.Sleep(
    3000);
    de.Rollback();
    };

    using(CommittableTransaction ctran = new CommittableTransaction())
    {
    try
    {
    action(ctran, DateTime.Now.Second.ToString()
    + "Com");
    new Thread(delegate(object obj) { DepAction(obj); }).Start(ctran.DependentClone(DependentCloneOption.BlockCommitUntilComplete));
    /*
    * BlockCommitUntilComplete 跟事务Commit之前,等待所有依赖事务提交
    * RollbackIfNotComplete 跟事务Commit时,依赖事务没有提交,则终止整个事务
    */
    ctran.Commit();
    }
    catch(Exception ex)
    {
    Console.WriteLine(ex.Message);
    ctran.Rollback();
    }
    }


    //环境事务处理
    using(TransactionScope scope = new TransactionScope())
    {
    Transaction.Current.TransactionCompleted
    += (s, e) => {
    Console.WriteLine(e.Transaction.TransactionInformation.ToString());
    };
    scope.Dispose();
    }
  • 相关阅读:
    数据库锁机制
    spring的事务传播行为与隔离级别
    Logback+ELK+SpringMVC搭建日志收集服务器
    提高mysql千万级大数据SQL查询优化30条经验(Mysql索引优化注意)
    有状态的bean和无状态的bean的区别
    浅谈Spring解决循环依赖的三种方式
    某类继承thread,同时实现runnable
    java动态代理
    缓存一致性
    Elasticsearch系列(一)--入门
  • 原文地址:https://www.cnblogs.com/blackman/p/2080635.html
Copyright © 2011-2022 走看看