什么是事务:
一件事情有N个组成单元,执行之后要么同时成功,要么同时失败。
MySQL是一条默认的事务,一条sql语句就是一条事务。
------------------------------------------------------------
MySQL事务:
1、开启一个事务:start transaction
2、事务提交:commit 代表从开启事务到事务提交中间的所有sql语句都认为是有效的。
3、事务回滚:rollback 代表从开启事务到事务回滚之间的所有sql语句都认为是无效的。
当开启事务执行sql语句之后,在数据库中是可以查看到的,但这只是以日志的方式存在,并没有真正的存在MySQL的磁盘上,这时执行事务回滚之后,数据是没有的。
------------------------------------------------------------
JDBC实务操作:
默认是自动事务:
每执行一次excuteUpdate方法,就代表事务自动提交。
把自动提交的代码设置成false,意思是不自动提交,改为手动提交:
conn.setAutoCommit(false);
手动开启事务之后获得执行平台:
Statement stmt = conn.createStatement();
通过jdbc的API手动操作:
1、开启事务:conn.setAutoCommit(false);
2、提交事务:conn.commit();
3、事务回滚:conn.rollback();
注意:执行sql语句的connection与开启事务的connection必须是同一个,才能对事务进行控制。
------------------------------------------------------------
DBUtils事务操作:
DBUtils分为有参构造和无参构造两种。
有参构造:
QueryRunner runner = new QueryRunner(DataSourceUtils.getdataSource());
里面的参数就是连接池,相当于连接到了数据库,如果没有参数的话,就要自己设置Connection连接数据库。
无参构造:
QueryRunner runner = new QueryRunner();
自己设置连接:
Connection conn = DataSourceUtils.getConnection();