工具类
public class TransactionHelper
{
private MySqlConnection connection;
private MySqlTransaction myTrans;
MySqlCommand myCommand;
String connetStr = "server=127.0.0.1;port=3306;user=root;password=root; database=minecraftdb;";//链接字符串
/// <summary>
/// 初始化事务
/// </summary>
public TransactionHelper()
{
connection = new MySqlConnection(connetStr);
connection.Open();//打开链接
//启动一个事务
myTrans = connection.BeginTransaction();
//为事务创建一个命令
myCommand = new MySqlCommand();
myCommand.Connection = connection;
myCommand.Transaction = myTrans;
Console.WriteLine("Transaction Init");
}
/// <summary>
/// 增删改操作
/// </summary>
/// <param name="sql"></param>
/// <returns>影响的行数,-1为执行失败</returns>
public int Update(string sql)
{
try
{
myCommand.CommandText = sql;
int a= myCommand.ExecuteNonQuery();
Console.WriteLine("Transaction Update:" + sql);
return a;
}
catch (Exception ex)
{
myTrans.Rollback();//遇到错误,回滚
connection.Close();
Console.WriteLine(ex.ToString());
return -1;
}
}
/// <summary>
/// 提交事务
/// </summary>
/// <returns></returns>
public Boolean Commit()
{
try
{
myTrans.Commit();
Console.WriteLine("Transaction Commit");
return true;
}
catch (Exception ex)
{
myTrans.Rollback();//遇到错误,回滚
Console.WriteLine(ex.ToString());
return false;
}
finally
{
connection.Close();
}
}
/// <summary>
/// 回滚
/// </summary>
public void Rollback()
{
if (connection.State != System.Data.ConnectionState.Closed)
{
myTrans.Rollback();
Console.WriteLine("Transaction Rollback");
connection.Close();
}
}
}
示例
public class Class1
{
// 注入事务类
TransactionHelper transactionHelper=new TransactionHelper();
public bool test()
{
if (transactionHelper.Update("sql1") <= 0)//调用sql命令
{
transactionHelper.Rollback();//回滚
return false;
}
if (transactionHelper.Update("sql2") <= 0)
{
transactionHelper.Rollback();//回滚
return false;
}
//判断其他业务逻辑,如:短信发送是否成功
if(otherfunction()){
transactionHelper.Rollback();//回滚
return false;
}
transactionHelper.Commit();//提交
return true;
}
}
————————————————
版权声明:本文为CSDN博主「李浩441605458」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_35540932/article/details/123066224