我正在制作一个Android应用,它从XML文件中获取信息。 我正在填充数据库中的信息,以便在程序运行时更容易访问,这要归功于查询的强大功能。
然而我注意到,使用事务大大提高了速度,所以很自然地,我想用它。
我的问题是以下内容; 在抽象的概念中,在解析 one 主题的所有信息之后,信息被发送到正确的实体(类),并且在该实体内部有一个方法将其添加到数据库中。之后,它返回到解析器,继续读取下一个主题,然后它将再次发送到右侧(可能是不同的)类。
这是通过switch语句实现的,每个case指向不同的类构造函数。
如果我想使用事务的速度,我需要在解析之前启动一个事务,运行解析和查询构建(据我所知,在事务中构建的所有查询都被收集并且在一旦整个文件被解析,结束全部作为一堆执行)然后结束事务。
使这一点更清晰,或更快阅读;代码的想法是;
Class parser(){
database.beginTransaction();
try{
// start parsing in a whole different class, which also points to SQL queries (in different classes again) in the entitys with a switch
}catch(Exception e){
database.endTransaction();
}
database.endTransaction();
}
我希望我能够清楚地阐述我的问题。
亲切的问候,
答案 0 :(得分:1)
是的,你有一般的想法。但是,在完成解析时,您需要小心将事务标记为成功,并且即使在发生异常时也要确保事务始终处于关闭状态。
来自the docs的示例:
db.beginTransaction();
try {
// do all the parsing in here
...
db.setTransactionSuccessful();
} finally {
db.endTransaction();
}