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()); } } } }