jdbc如何控制事务
1.什么是事务
对一个数据资源(比如数据库)进行一系列操作,要将这些操作当作一个原子操作来进行,要么全部成功,要么全部失败
2.事务的ACID特性
Atomic:原子性:多个操作要当作一个原子操作来进行,要么全部成功,要么全部失败
Consistent:一致性,即事务成功执行以后,事务的完整性约束不会被破坏
Insulation:隔离性,多个事务在并发的对数据访问时,互不干预。
Duration:持久性,事务成功执行以后,结果要永久保存
3.如何控制事务
a. conn.setAutoCommit(false);//设置自动提交为false,禁止自动提交。在默认情况下为true,jdbc驱动程序会在每一个更新操作语句之后自动添加commit语句,
b. conn.commit();提交事务。即驱动程序会向数据库发送一个commit语句
c. conn.rollback();回滚事务,即驱动程序会向数据库发送一个rollback语句
//Stock为自己定义的一个类,有id,stockNo,qty三个属性
Stock stock = null; try { conn = DBConnection.getConnection(); conn.setAutoCommit(false); String sql = "select * from t_stock where stockNo = ?"; pstmt = conn.prepareStatement(sql); pstmt.setString(1,stockNo); rs = pstmt.executeQuery(); if(rs.next()){ stock = new Stock(); stock.setId(rs.getInt("id")); stock.setStockNo(rs.getString("stockNo")); stock.setQty(rs.getDouble("qty")); } conn.commit(); } catch (Exception e) { try { conn.rollback(); } catch (SQLException e1) { e1.printStackTrace(); } e.printStackTrace(); } |