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()方法,撤销每一个修改。

  • 相关阅读:
    VS2017离线安装与Oracle数据库开发环境搭建
    拒绝“高冷”词汇!初学C#中的委托
    拒绝“高冷”词汇!初学C#中实用的泛型!
    误删Django的model中的表解决办法
    Django-ORM操作
    请求头获取用户设备、点赞
    随机验证码、图片验证码和邮箱发送用户验证码
    Django的Form验证(2)
    Django的Form验证
    Pycharm导入Django项目
  • 原文地址:https://www.cnblogs.com/jinhaoObject/p/4606051.html
Copyright © 2011-2022 走看看