MyEyes

Logging my life

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

有一些连续的动作需要在同一个事务里面处理,如转账等,转账的成功与否需要在同一个事务中处理,如果A的账号余额不够,转账失败,是需要将事务回滚的,而不是提交:

public void payment(){
        SQLiteDatabase db = sqliteOpenHelper.getWritableDatabase();
        db.beginTransaction(); //开启事务
        try {
            db.execSQL("update person set amount=amount-10 where personid=1");
            db.execSQL("update person set amount=amount+10 where personid=2");
            db.setTransactionSuccessful(); //设置事务标志位true
        } catch (Exception e) {
            // TODO: handle exception
        } finally{
            //结束事务,有两种情况:commit 和 rollback,
            //事务的提交还是回滚是由事务的标志决定的,如果事务的标志位true,事务就会提交,为false则回滚,默认情况下是false
            db.endTransaction(); 
        }
    }
posted on 2012-06-12 10:44  MyEyes  阅读(422)  评论(0编辑  收藏  举报