MySql事务:MySql默认为每条sql语句自动开启事务,并自动提交事务
开启事务:conn.setAutoCommit(false);
提交事务:conn.commit();
回滚事务:conn.rollback();
JDBCDemo.java:
package com.xxx.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) {
Connection conn = null;
try {
//1、注册驱动
Class.forName("com.mysql.jdbc.Driver");
//2、获得connection
conn = DriverManager.getConnection("jdbc:mysql:///web19", "root", "root");
//手动开启事务 (MySql默认是为每条sql语句自动开启事务,并自动提交)
conn.setAutoCommit(false);
//3、获得sql执行者
Statement stmt = conn.createStatement(); // 执行sql的conn必须和开启事务的conn保持一致。
//4、执行sql
stmt.executeUpdate("update account set money=5000 where name='tom'");
//提交事务 (结束事务;建议放在finally中,即使是回滚也需要结束事务)
conn.commit();
stmt.close();
conn.close();
} catch (Exception e) {
try {
conn.rollback(); // 事务回滚
} catch (SQLException e1) {
e1.printStackTrace();
}
e.printStackTrace();
}
}
}