MySQL的事务控制:
开启事务:start transaction;
提交:commit();
回滚:rollback();
JDBC事务控制:
开启事务:setAutoCommit(false);
提交:commit();
回滚:rollback();
DBUtils的事务控制也是通过JDBC
ThreadLocal:实现的是通过线程绑定的方式传递参数
注意:控制事务的Connection必须是同一个
执行SQL的Connection与开启事务的Connection必须是同一个才能对事务进行控制
JDBC的事务控制
package com.itheima.jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class JDBCDemo {
public static void main(String[] args) {
// TODO Auto-generated method stub
// 通过jdbc去控制事务
Connection conn = null;
// 1.注册驱动
try {
Class.forName("com.mysql.jdbc.Driver");
// 2.获得connection
conn = DriverManager.getConnection("jdbc:mysql:///web19", "root", "root");
// 手动开启事务
conn.setAutoCommit(false);
// 3.获得执行平台
Statement stmt = conn.createStatement();
// 4.操作sql
int executeUpdate = stmt.executeUpdate("update account set money=5000 where name='tomm'");
conn.commit();
stmt.close();
conn.close();
} catch (Exception e) {
// TODO Auto-generated catch block
try {
conn.rollback();
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
e.printStackTrace();
}
}
}