如何在sqlite事务中捕获异常 - java android

时间:2012-09-12 13:52:17

标签: android android-sqlite

所以我正在为android编写一个数据库管理器,在该类中将是一个写入该数据库表的方法。

 SQLiteDatabase db = this.getReadableDatabase();
        db.beginTransaction();
        try {
          //DO some db writing
          db.setTransactionSuccessful();
        } finally {
          db.endTransaction();
        }

我的理解是,如果事务没有像在try中那样设置为成功,这将自动回滚数据,但是如果它不成功我如何捕获,以便我可以通知用户成功或回滚

2 个答案:

答案 0 :(得分:5)

将catch块放在finally块之前

SQLiteDatabase db = this.getReadableDatabase();
        db.beginTransaction();
        try {
          //DO some db writing
          db.setTransactionSuccessful();
        }catch(Exception e){
           // here you can catch all the exceptions
           e.printStack();
        } finally {
          db.endTransaction();
        }

try catch

的示例

http://www.java-samples.com/showtutorial.php?tutorialid=293

http://tutorials.jenkov.com/java-exception-handling/basic-try-catch-finally.html

答案 1 :(得分:0)

对我来说,使用e.printStackTrace();代替了e.printStack();

SQLiteHelper dbHelper = new SQLiteHelper(mContext);
        mDatabase = dbHelper.getReadableDatabase();

        mDatabase.beginTransaction();

        try {

        }catch(Exception e){
            // here you can catch all the exceptions
            e.printStackTrace();

        } finally {

            mDatabase.endTransaction();
        }

        mDatabase.close();