简介
上一篇我们完整的介绍了SQLite在Android中如何使用,今天我们要来讲一下“Transaction“即事务这个问题。
我们经常在编程中会碰到这样的业务场景:
- 没问题一系列有业务关联性表操作的数据一起提交;
- 事务中只要有一步有问题,那么就认为在此过程中的每一步都失败,为了保证业务数据的完整性所以每一步的表操作数据都不成功-即:回滚;
在SQLite中,我们使用:
- dbOpenHelper.getWritableDatabase().beginTransaction()来开启事务;
- dbOpenHelper.getWritableDatabase().setTransactionSuccessful()申明整个事务成功;
因此我们会把所有的单条DB操作如果有问题都需要抛出Exception,然后在外部调用的块中以“beginTransaction"为起初步骤,全部步骤成功后我们会调用setTransactionSuccessful();那么整个DB事务就会被提交。
否则在beginTransaction后的每一步db操作都不会成功。
如果我们没有在一开始就以beginTransaction()开头,那么每一个单独的db操作如:db.insert()这样的一条语句只要不抛错就会自动被提交到数据库,并且如果有一系列关联的db操作动作的话不使用beginTransaction开头的话那么它们是不含事务操作的。