您当前的位置: 首页 > 

梁同学与Android

暂无认证

  • 3浏览

    0关注

    618博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Andorid --- 为什么要使用事务,什么叫做事务的提交和回滚?

梁同学与Android 发布时间:2022-04-20 22:56:37 ,浏览量:3

我们在操作数据库的时候经常会遇到这个名词:事务,有些时候我们只是会用并不知道怎样用,网上有很多讲解,解决了我部分疑问,但是还有一些疑点想记录下,下面一一介绍这几个问题。

一、什么是事务

事务是用户定义的一个数据库操作序列,这些操作要不全部操作成功,要不全部操作失败,是一个不可分割的工作单位。

二、为什么要使用事务,什么时候使用事务

啥意思呢,简单的举个例子,比如你去买菜,花了自己20,商家收20。这个过程就是在你的账户中扣除20块而在商家的账户多20块。整个过程不能有一步出错,否则就会造成一定的损失,也就是说如果你的账户扣款成功,而商家没收到,你就冤大头了,你别走了,给我接着付款;如果商家收到了而你的账户扣款失败,那你就偷着乐吧,但是第三方,比如微信支付宝就冤大头了,多给卖菜的转了20块;

这时候有了事务这个东西,当我们在转账之前开启一个事务,这样从你账户扣钱这件事,给卖菜的账户加钱这件事,都放到一个事务里面操作,如果中间某个程序出现错误,我们就可以立即回滚,使操作恢复到初始的状态,也就是也没扣你的,卖菜的也没多。

在实际数据库的操作中,无非会用到增删改查,一般增加数据、修改数据、删除数据需要开启事务。比如说你插入一条数据的时候可能插入失败,这样就需要事务。

三、什么叫做事务的提交

开启事务,将任务放到一个事务中操作

四、什么叫做事务的回滚

将你的所有操作撤回,数据恢复一开始的样子

五、怎么样使用事务

举例:插入数据

db.beginTransaction();  //手动设置开始事务
try{
    //批量处理操作
    for(Collection c:colls){
        insert(db, c);
    }
    db.setTransactionSuccessful(); //设置事务处理成功,不设置会自动回滚
}catch(Exception e){
   MyLog.printStackTraceString(e);
}finally{
   /*
     结束事务,在这里会判断是否执行了db.setTransactionSuccessful(),
     如果执行了,证明事务已经提交,任务执行的过程中无异常,
     如果没有执行 db.setTransactionSuccessful(),
     就会回滚,什么也没操作,任务执行的过程中有异常。
   */
   db.endTransaction();
   db.close(); // 关闭数据库连接
}
关注
打赏
1660730345
查看更多评论
立即登录/注册

微信扫码登录

0.3097s