首页 > 代码库 > JDBC中Transaction的实现
JDBC中Transaction的实现
Transaction(交易)问题指的是在银行交易过程中,有两方以上的数据库要变动,这时候要求两方数据库同时做出改变。
mysql中默认commit方式为自动提交,因此实现这个问题的
第一步是调用Connection中的setAutoCommit(false)方法,将提交方式改为手动提交;
然后使用addBatch()方法,如果一方数据库执行出现错误,调用用callBack()方法,确保多方数据库同时变动
例:
1 import java.sql.*; 2 3 public class TestTransaction { 4 5 public static void main(String[] args) { 6 Statement stmt = null; 7 Connection conn = null; 8 9 try { 10 Class.forName("com.mysql.jdbc.Driver"); 11 conn = DriverManager.getConnection("jdbc:mysql://localhost/mydata?user=username&password=pw&useSSL=false"); 12 13 conn.setAutoCommit(false); 14 stmt = conn.createStatement(); 15 stmt.addBatch("insert into dept values (1, ‘A‘, ‘A‘)"); 16 stmt.addBatch("insert into dept values (2, ‘B‘, ‘B‘)"); 17 stmt.addBatch("insert into dept values (3, ‘C‘, ‘C‘)"); 18 stmt.executeBatch(); 19 conn.commit(); 20 conn.setAutoCommit(true); 21 } catch (ClassNotFoundException e) { 22 e.printStackTrace(); 23 } catch (SQLException e) { 24 e.printStackTrace(); 25 26 try { 27 if (conn != null) { 28 conn.rollback(); 29 conn.setAutoCommit(true); 30 } 31 } catch (SQLException e1) { 32 e1.printStackTrace(); 33 } 34 35 } finally { 36 try { 37 if (stmt != null) { 38 stmt.close(); 39 } 40 if (conn != null) { 41 conn.close(); 42 } 43 } catch (SQLException e) { 44 e.printStackTrace(); 45 } 46 } 47 48 } 49 50 }
JDBC中Transaction的实现
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。