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