JDBC管理事务
Posted 路上的风景
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JDBC管理事务相关的知识,希望对你有一定的参考价值。
package com.fgy.jdbc; import java.sql.*; /** * 转账小案例 */ public class tx { public static void main(String[] args) { Connection conn = null; PreparedStatement pstm1 = null; PreparedStatement pstm2 = null; try { // 1.导入驱动jar包 // 2.注册驱动 Class.forName("com.mysql.jdbc.Driver"); // 3.获取连接 conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/db1", "root", "root"); // 开启事务 conn.setAutoCommit(false); // 4.定义SQL语句 // fan给li转账500 String sql1 = "update account set balance = balance - ? where name = ?"; String sql2 = "update account set balance = balance + ? where name = ?"; // 5.获取statement对象 pstm1 = conn.prepareStatement(sql1); pstm2 = conn.prepareStatement(sql2); pstm1.setDouble(1, 500); pstm1.setString(2, "fan"); pstm2.setDouble(1, 500); pstm2.setString(2, "li"); // 6.执行SQL语句 pstm1.executeUpdate(); // 手动制造异常 // int i = 1 / 0; pstm2.executeUpdate(); // 7.处理结果 // .... // 提交事务 conn.commit(); } catch (Exception e) { e.printStackTrace(); try { if (conn != null) conn.rollback(); } catch (SQLException ex) { ex.printStackTrace(); } } finally { // 8.释放资源 if (pstm1 != null) { try { pstm1.close(); } catch (SQLException e) { e.printStackTrace(); } } if (pstm2 != null) { try { pstm1.close(); } catch (SQLException e) { e.printStackTrace(); } } if (conn != null) { try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } } }
以上是关于JDBC管理事务的主要内容,如果未能解决你的问题,请参考以下文章