所以我正在为android编写一个数据库管理器,在该类中将是一个写入该数据库表的方法。
SQLiteDatabase db = this.getReadableDatabase();
db.beginTransaction();
try {
//DO some db writing
db.setTransactionSuccessful();
} finally {
db.endTransaction();
}
我的理解是,如果事务没有像在try中那样设置为成功,这将自动回滚数据,但是如果它不成功我如何捕获,以便我可以通知用户成功或回滚
答案 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();