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

  • 相关阅读:
    题目1.A乘以B
    题目1.A乘以B
    秋季学习总结
    题目1.A乘以B
    第一周作业
    C语言I博客作业02
    Silverlight中图像的变换(1)
    SQL SERVER 2005安装过程中COM+错误解决!
    c++ 对文件的操作
    JS标准DES加解密
  • 原文地址:https://www.cnblogs.com/jinhaoObject/p/4606051.html
Copyright © 2011-2022 走看看