JDBC对事务的使用(包括自动提交,回滚等知识)

本文详细介绍了如何使用SQL事务来确保多个操作的原子性。主要内容包括:何时使用事务、事务的基本步骤(如设置自动提交、执行SQL语句及提交或回滚事务)、设置存储点的方法及其作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先得清楚什么时候使用事务。  
   当你需要一次执行多条SQL语句时,可以使用事务。通俗一点说,就是,如果这几条SQL语句全部执行成功,则才对数据库进行一次更新,如果有一条SQL语句执行失败,则这几条SQL语句全部不进行执行,这个时候需要用到事务。  
   其次才是事务的具体使用。  
1.获取对数据库的连接(代码这里省略了吧,网上太多了,对各种数据库的连接的都有)  
2.设置事务不自动提交(默认情况是自动提交的)   
conn.setAutoCommit(false);  //其中conn是第一步获取的随数据库的连接对象。

 3.把想要一次性提交的几个sql语句用事务进行提交 

Statement stmt = null; 
     stmt = conn.createStatement(); 
     stmt.executeUpdate(sql1); 
     stmt.executeUpdate(Sql2); 
     conn.commit();   //使用commit提交事务

4.捕获异常,进行数据的回滚(回滚一般写在catch块中) 

catchException e) 
    { 
        ... 
        try 
        { 
           conn.rollback(); 
        } catch(Exception e) 
        {...} 
     }

5.把事务再改成自动提交(默认状态) 

conn.setAutoCommit(true);
解答各种疑问  
1.回滚的目的是什么呢?  
目的是使得sql1,sql2。。。等操作要么全部执行成功,要么全部执行不成功,这也是为什     么把这几个sql语句当成一个事务来处理的目的。  
2.回滚从哪里开始回滚,我如何控制回滚的起始点。  

其实是可以设置存储点的 

Savepoint piont = conn.setSavepoint(); 
   conn.rollback(point);

如果你没有设置存储点,他会回滚到你设置禁止事务自动提交的时候,因为你是先设置禁止自动提交的,再进行executeUpdate(sql)的,所以他会回滚到你的所有执行的这几个sql语句前的状态。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值