[搬家前]数据库操作的回滚

当涉及到多张表的操作时。记得,要保持操作的原子性。如果其中一个环节出错,要回滚。这也是实际操作要注意的,不能以为操作一定会成功。

示例代码,使用boolean变量来表示操作是否需要回滚。

各人感觉还行吧,因为都在一次的连接里完成,而不是多次连接,这样又耗费时间。

当然,这样一个函数里完成太多的操作,是不是不好,又另说了...

 

==================================华丽地,出现了分割线=================================

 

public TestDao extends BasicDao()

{

   //判断是否要回滚,开始时不用

   boolean isCompleted = true;

   try(

      conn ........

      ........

      ........

      pstmt.execute();

      //一个操作执行完毕了,所以置为false。如果出错,这个pstmt也没有影响,跳到catch里,不用回滚

      isCompleted = false;

      conn.....

      .........

      .........

      pstmt.execute();

      //假设为两个操作,都执行完毕,显然也不用回滚

      isCompleted = true;

   } catch (Exception e) {

      if(!isCompleted) {
          //不完整,需要回滚操作

      } else {

          //完整了

      }

      ....
   } finnally {

      //这这里释放连接资源,有可能会出exception,所以在finally里,保证实现

   }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值