zoukankan      html  css  js  c++  java
  • 分布式事务

    namespace 事务处理
    {
        public class SqlHelper
        {
            public static string GetConnection()
            {
                string connStr = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
                return connStr;
            }
            public static int ExecuteNonQuery(Transaction transaction,string sql,params MySqlParameter[] parameters)
            {
                int result = -1;
                using (MySqlConnection conn = new MySqlConnection(GetConnection()))
                {
                    conn.Open();
                    if (null != transaction)
                    {
                        conn.EnlistTransaction(transaction);    //将连接登记到事务
                    }
                    using (MySqlCommand cmd = conn.CreateCommand())
                    {
                        cmd.CommandText = sql;
                        cmd.Parameters.AddRange(parameters);
                        result = cmd.ExecuteNonQuery();
                    }
                }
                return result;
            }
     
            public static DataTable ExecuteDataTable(string sql, params MySqlParameter[] parameters)
            {
                using (MySqlConnection conn = new MySqlConnection(GetConnection()))
                {
                    using (MySqlCommand cmd = conn.CreateCommand())
                    {
                        cmd.CommandText = sql;
                        cmd.Parameters.AddRange(parameters);
                        using (MySqlDataAdapter da = new MySqlDataAdapter(cmd))
                        {
                            using (DataSet ds = new DataSet())
                            {
                                da.Fill(ds);
                                return ds.Tables[0];
                            }
                        }
                    }
                }
            }
        }
     
    }

    创建基于 Transaction 类的分布式显式事务步骤如下:

    1)实例化一个可提交的CommittableTransaction对象;

    2)将要参与事务的连接通过MySqlConnection对象的EnlistTransaction(Transaction transaction)登记到上一步创建的CommittableTransaction对象上;

    3)如果事务可以成功完成,使用CommittableTransaction对象的Commit()方法提交事务处理结果;

    4)如果事务处理中发生错误,就调用CommittableTransaction对象的Rollback()方法,撤销每一个修改。

  • 相关阅读:
    异步加载图片
    彩票项目
    linux 多线程的分离和可链接属性
    C库中system和atexit和exit的使用
    C库中getenv函数
    mode|平均数|方差|标准差|变异系数|四分位数|几何平均数|异众比率|偏态|峰态
    radar chart
    植物基因组|注释版本问题|重测序vs泛基因组
    signals function|KNN|SVM|average linkage|Complete linkage|single linkage
    supervised learning|unsupervised learning
  • 原文地址:https://www.cnblogs.com/jinhaoObject/p/4606051.html
Copyright © 2011-2022 走看看