5

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

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

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

4

2 回答 2

6

只需将 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

于 2012-09-12T13:55:06.397 回答
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();
于 2019-10-19T07:43:11.967 回答