JDBC管理事务_实现:
1.使用connection对象来管理事务
开启事务:setAutoCommit(boolean autoCommit):调用该方法设置参数为false,即开后事务
在执行sql之前开启事务
提交事务:commit()
当所有sql都执行完提交事务
回滚事务:rollback()
在catch中回滚事务
代码实现:
public static void main(String[] args) { Connection conn = null; PreparedStatement pre1 = null; PreparedStatement pre2 = null; try { // 1.获取连接 conn = JDBCUtils.getConnection(); // 开启事务 conn.setAutoCommit(false); // 2.定义sql // 2.1张三 - 500 String sql1 = "update account set balance = balance - ? where id = ?"; // 2.2李四 + 500 String sql2 = "update account set balance = balance + ? where id = ?"; // 3.获取sql执行对象 pre1 = conn.prepareStatement(sql1); pre2 = conn.prepareStatement(sql2); // 4.设置参数 pre1.setDouble(1,500); pre1.setInt(2,1); pre2.setDouble(1,500); pre2.setInt(2,2); // 5.执行sql pre1.executeUpdate(); // 手动制造异常 int i = 3/0; pre2.executeUpdate(); // 提交事务 conn.commit(); } catch (Exception e) { // 事务回滚 try { if (conn != null) { conn.rollback(); } } catch (SQLException es) { es.printStackTrace(); } e.printStackTrace(); } finally { // 释放资源 JDBCUtils.closeConnection(pre1,conn); JDBCUtils.closeConnection(pre2,null); } }
数据库连接池_概述:
概念:其实就是一个容器(集合),存放数据库连接的容器。
当系统初始化好后,容器被创建,容器中会申请一些连接对象,当用户来访问数据库时,从容器中获取连接对象,用户访问完之后,会将连接对象归还给容器。
好处∶
1.节约资源
2.用户访问高效
标签:事务,JDBC,数据库,连接池,sql,null,pre1,conn,pre2 From: https://www.cnblogs.com/hungui/p/16815500.html