conn.setAutoCommit(0);//修改系统非自动提交。 conn.commit();//事务提交 conn.rollback();//事务回滚 SavePoint sp=con.setSavePoint();//设置保存点 conn.rollback(sp);//返回保存点 conn.setTransactionIsolation();//设置隔离级别 conn.getTransactionIsolation();//获取隔离级别
设定事务的隔离级别:con.setTransactionIsolation(Connection.isolationLevel); 四种隔离级别: con.setTransactionIsolation(Connection.TRANSACTION_READ_UNCOMMITTED);//最底级别:只保证不会读到非法数据,上述3个问题有可能发生 con.setTransactionIsolation(Connection.TRANSACTION_READ_COMMITTED); //默认级别:能够防止脏读 con.setTransactionIsolation(Connection.TRANSACTION_REPEATABLE_READ);//能够防止脏读和不可重复读取 con.setTransactionIsolation(Connection.TRANSACTION_SERIALIZABLE); //最高级别:防止上述3种状况,事务串行执行
简单的用例:java
package com.netease.class1; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import org.apache.commons.dbcp.BasicDataSource; import com.mysql.jdbc.PreparedStatement; public class work_4 { private static String JDBC_DRIVER = "com.mysql.jdbc.Driver"; private static String DB_URL = "jdbc:mysql://10.120.177.10:3306/datebaseclass"; private static String USER = "test"; private static String PASS = "test"; public static void main(String[] args) throws ClassNotFoundException { work4(); } public static void work4() { Connection conn = null; PreparedStatement ptmt = null; ResultSet rs = null; try { // 1 Class.forName(JDBC_DRIVER); // 2 conn = (Connection) DriverManager.getConnection(DB_URL, USER, PASS); // 3 conn.setAutoCommit(false); ptmt = (PreparedStatement) conn .prepareStatement("update Product set Inventory=Inventory-1 where ProductName = 'bag'"); ptmt.execute(); ptmt = (PreparedStatement) conn .prepareStatement("INSERT INTO `Order` (buyer, ProductName) VALUES ('XiaoMing', 'bag')"); ptmt.execute(); conn.commit(); } catch (ClassNotFoundException e) { // Class没有发现异常 System.out.println(e.toString()); } catch (SQLException e) { // Class没有发现异常 if (conn != null) { try { conn.rollback(); } catch (SQLException e1) { System.out.println(e.toString()); } } System.out.println(e.toString()); } finally { try { if (conn != null) { conn.close(); } if (ptmt != null) { ptmt.close(); } if (rs != null) { rs.close(); } } catch (SQLException e) { System.out.println(e.toString()); } } } }