mysql事务处理 回滚_MySql的事物处理,提交,回滚

在MySQL数据库中,事务处理与回滚与其他数据库有所区别。必须使用支持事务的INNODB或BDB引擎。MySQL事务有两种处理方式:1) 使用begin, rollback, commit;2) 通过设置autocommit进行控制。当autocommit设为0时,所有SQL将作为事务处理,直到commit或rollback。示例展示了如何在代码中进行事务操作。" 82502107,7384532,面向对象编程:继承方式与成员访问权限解析,"['面向对象', '继承', '访问控制', 'is_a', 'has_a']
摘要由CSDN通过智能技术生成

最近在做的一个小项目,用到了MySql数据库,以前都没涉及到这方面,所以还是按照了其他数据库的思维来用MySql。可是在做事物的rollback的时候却怎么也不成功。查找了MySql的相关资料才了解到MySql的事务处理和其他数据库还是有区别的。

首先,你在创建MySql数据库表的时候,一定要选择他的引擎为INNODB和BDB类型。只有这两种类型支持事物处理。你可以通过show variables like "have_%"命令查看一下当前的INNODB信息,如果have_innodb一项为YES则,当前数据表支持事物处理。

其次,MySql的事物处理时有两种的。以前我认为数据库用到回滚时,只有设置autocommit,但在MySql里还有别的方式。MySql的事物处理有两种方式:

1、用begin,rollback,commit来实现

begin 开始一个事务

rollback 事务回滚

commit  事务确认

2、直接用set来改变mysql的自动提交模式

MYSQL默认是自动提交的,也就是你提交一个QUERY,它就直接执行!我们可以通过

set autocommit=0   禁止自动提交

set autocommit=1 开启自动提交

来实现事务的处理。

但注意当你用 set autocommit=0 的时候,你以后所有的SQL都将做为事务处理,直到你用commit确认或rollback结束,注意当你结束这个事务的同时也开启了个新的事务!按第一种方法只将当前的作为一个事务!

例子:(第一种方法)

MySqlTransaction tx = con.BeginTransaction();

MySqlCommand cmd = new MySqlCommand("set names gb2312", con);

cmd.Transaction = tx;

cmd.ExecuteNonQuery();

try

{

for (int i = 0; i < sqlList.Count; i++)

{

string strsql = sqlList[i].ToString();

if (strsql.Trim().Length > 1)

{

cmd.CommandText = strsql;

cmd.ExecuteNonQuery();

}

}

//提交所做的Sql操作

tx.Commit();

flag = true;

}

catch (Exception ex)

{

tx.Rollback();

LogManager.WriteLog(LogFile.Error, ex.Message);

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值