美文网首页
使用事务

使用事务

作者: TTTqiu | 来源:发表于2016-04-25 17:10 被阅读28次
    • SQLite 数据库是支持事务的。
    • 事务的特性可以保证让某一系列的操作要么全部完成,要么一个都不会完成。
    • 比如银行转账,对方没收款成功,则付款方也不能扣款成功。
    SQLiteDatabase db = dbHelper.getWritableDatabase();
    db.beginTransaction(); // 开启事务
    try {
        db.delete("Book", null, null);
        if (true) {
        // 在这里手动抛出一个异常,让事务失败
            throw new NullPointerException();
        }
        ContentValues values = new ContentValues();
        values.put("name", "Game of Thrones");
        values.put("author", "George Martin");
        values.put("pages", 720);
        values.put("price", 20.85);
        db.insert("Book", null, values);
        db.setTransactionSuccessful(); // 事务已经执行成功
    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        db.endTransaction(); // 结束事务
    }
    
    1. 开启事务
    db.beginTransaction(); // 开启事务
    
    2. 操作完成后设置事务成功
    db.setTransactionSuccessful();
    
    3. 关闭事务
    db.endTransaction();
    
    • 这里在捕获异常的代码块中操作,并手动抛出一个异常。
    • 因为异常,事务没有执行成功,前面的删除操作也不会成功。
    • 去掉这个异常,删除和添加操作都能成功。

    相关文章

      网友评论

          本文标题:使用事务

          本文链接:https://www.haomeiwen.com/subject/smcqrttx.html