在事务中使用多个方法

时间:2011-08-17 08:38:11

标签: android sqlite transactions

我正在制作一个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();
}

我希望我能够清楚地阐述我的问题。

亲切的问候,

1 个答案:

答案 0 :(得分:1)

是的,你有一般的想法。但是,在完成解析时,您需要小心将事务标记为成功,并且即使在发生异常时也要确保事务始终处于关闭状态。

来自the docs的示例:

db.beginTransaction();
try {
    // do all the parsing in here
    ...
    db.setTransactionSuccessful();
} finally {
    db.endTransaction();
}