数据库事务(简称:事务)是数据库管理系统执行过程中的一个逻辑单位,由一个有限的数据库操作序列构成。
概要: 一个数据库事务通常包含了一个序列的对数据库的读/写操作。它的存在包含有以下两个目的:- 为数据库操作序列提供了一个从失败中恢复到正常状态的方法,同时提供了数据库即使在异常状态下仍能保持一致性的方法。
- 当多个应用程序在并发访问数据库时,可以在这些应用程序之间提供一个隔离方法,以防止彼此的操作互相干扰。
connection.setAutoCommit(false);开启事务
connection.rollback() 回滚事务
connect.commit() 提交事务
案例代码:
import cn.guangming.demo.JdbcUtils; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.SQLException; /** * 模拟银行的转账业务 * */ public class Transcation { public static void main(String[] args) { Connection connection=null; PreparedStatement preparedStatement=null; try { //1.获取连接 connection = JdbcUtils.getConnection(); //2.开启事务 connection.setAutoCommit(false); //3.获取preparedstatement preparedStatement = connection.prepareStatement("UPDATE coount SET money =money-? WHERE sname=?"); //4.使用preparedstatement两次更新操作 preparedStatement.setDouble(1,500); preparedStatement.setString(2,"dudu"); preparedStatement.executeUpdate(); System.out.println(11/0); preparedStatement=connection.prepareStatement("UPDATE coount SET money =money-? WHERE sname=?"); preparedStatement.setDouble(1,500); preparedStatement.setString(2,"jiujiu"); preparedStatement.executeUpdate(); //提交事务 connection.commit(); System.out.println("转账成功"); } catch (Exception e) { //事务回滚 try { connection.rollback(); } catch (SQLException e1) { e1.printStackTrace(); } System.out.println("转账失败"); }finally { //释放资源 JdbcUtils.close(preparedStatement,connection); } } }
JDBC事务的处理-----模拟银行转账业务
标签:where final 恢复 访问 操作 [] 存在 tran nts