分佈式事務

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 類的分佈式顯式事務步驟以下:sql

1)實例化一個可提交的CommittableTransaction對象;分佈式

2)將要參與事務的鏈接經過MySqlConnection對象的EnlistTransaction(Transaction transaction)登記到上一步建立的CommittableTransaction對象上;spa

3)若是事務能夠成功完成,使用CommittableTransaction對象的Commit()方法提交事務處理結果;對象

4)若是事務處理中發生錯誤,就調用CommittableTransaction對象的Rollback()方法,撤銷每個修改。事務

相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息