SQLite数据库--事务

事务是并发控制的基本单元

数据库事务具有ACID特性:

  • A:Atomic原子性
    数据库事务是不可分割的工作单位,事务中的全部操作全部执行或者全部不执行

  • C:Consistency一致性
    数据库事务不能破坏数据库的完整性以及业务逻辑上的一致性或者说是事务执行前后总的状态是一致的

  • I:Isolation隔离性
    在并发环境中,当不同的事务同时操作相同的数据时,每个事务都有各自的完整数据空间,事务不会查看到中间状态的数据

  • D:Durability持久性
    事务成功结束,它对数据库所做的更新就必须永久保存下来

事务执行代码:

SQLiteDatabase db = dbHelper.getReadableDatabase();  
db.beginTransaction();  //开启事务                       
try {                                                
    db.delete("Book", null, null);                   
    ContentValues values = new ContentValues();      
    values.put("name", "sheng");                     
    values.put("author", "xiao");                    
    values.put("pages", 123);                        
    values.put("price", 20.5);                       
    db.insert("Book", null, values);                 
    db.setTransactionSuccessful();  //事务已经执行成功       
} catch (Exception e) {                              
    e.printStackTrace();                             
}finally{
    db.endTransaction();  //结束事务                     
}                                                    

首先调用SQLiteDatabasebeginTransaction()方法来开启一个事务,然后在一个异常捕获的代码块中去执行具体的数据库操作,当所有的操作完成之后,调用setTransactionSuccessful()表示事务已经执行成功了,最后在finally代码块中调用endTransaction()来结束事务

    原文作者:大话程序
    原文地址: https://www.jianshu.com/p/add11b6a8fa4
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞