事务能够控制是否和何时更改应用于数据库,将单个SQL语句或一组SQL语句视为一个逻辑单元,如果任何语句失败,则整个事务将失败
转账问题中转入和转出两个账户的余额变化就是典型的事务案例,一个账户余额增加的同时,另一个转出的账户的余额必然随之减少,这可以看作是一整个事务
第一步先连接数据库,开启事务以及准备好转账的SQL语句
//第一步:得到数据库连接
connection=JDBCUtills.getConnection();
//开启事务
connection.setAutoCommit(false);
//第三步:准备好转账的SQL语句
String sqll="update account set money=monet+? where id=?";
第二步加载SQL 编辑转账钱数以及转款人
//第四步:加载sql
//zs转出100
preparedStatement=connection.prepareStatement(sqll);
preparedStatement.setDouble(1,-100);
preparedStatement.setInt(2,1);
preparedStatement.executeUpdate();
//ls转入100
preparedStatement=connection.prepareStatement(sqll);
preparedStatement.setDouble(1,100);
preparedStatement.setInt(2,2);
preparedStatement.executeUpdate();
第三步 提交事务
}catch (Exception e){
try{
connection.rollback();
}catch (SQLException ex){
throw new RuntimeException(ex);
}
}finally {
try{
JDBCUtills.clo(null,preparedStatement,connection);
}catch (SQLException e){
throw new RuntimeException(e);
}
}
案例完成了