Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/209.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在事务中使用多个方法_Android_Sqlite_Transactions - Fatal编程技术网

Android 在事务中使用多个方法

Android 在事务中使用多个方法,android,sqlite,transactions,Android,Sqlite,Transactions,我正在制作一个Android应用程序,它从XML文件中获取信息。 由于查询的强大功能,为了在程序运行时更方便地访问,我将信息填入数据库中 然而,我注意到,使用事务大大提高了速度,所以我自然希望使用它 我的问题是以下这些; 在抽象的思想中,解析一个主题的所有信息后,信息被发送到正确的实体(类),在该实体内有一个方法将其添加到数据库中。在这之后,它返回到解析器,解析器继续读取下一个主题,然后这个主题将被再次发送到right(可能是另一个)类 这是通过switch语句实现的,每个实例都指向不同的类构造

我正在制作一个Android应用程序,它从XML文件中获取信息。 由于查询的强大功能,为了在程序运行时更方便地访问,我将信息填入数据库中

然而,我注意到,使用事务大大提高了速度,所以我自然希望使用它

我的问题是以下这些; 在抽象的思想中,解析一个主题的所有信息后,信息被发送到正确的实体(类),在该实体内有一个方法将其添加到数据库中。在这之后,它返回到解析器,解析器继续读取下一个主题,然后这个主题将被再次发送到right(可能是另一个)类

这是通过switch语句实现的,每个实例都指向不同的类构造函数

如果我想使用事务的速度,我需要在解析之前启动一个事务,运行解析和查询构建(据我所知,所有在事务中构建的查询都被收集,最后都作为一个束执行),然后在解析完整个文件后结束事务

使这一点更清楚,或更快地阅读;代码思想是

    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();
}
我希望我的问题表述得足够清楚


亲切的问候,

是的,你已经大致了解了。但是,在完成解析时,您需要小心地将事务标记为成功,并确保即使发生异常,事务也始终关闭

示例来自:

db.beginTransaction();
试一试{
//在这里做所有的分析
...
db.setTransactionSuccessful();
}最后{
db.endTransaction();
}

是的,你已经大致了解了。但是,在完成解析时,您需要小心地将事务标记为成功,并确保即使发生异常,事务也始终关闭

示例来自:

db.beginTransaction();
试一试{
//在这里做所有的分析
...
db.setTransactionSuccessful();
}最后{
db.endTransaction();
}

Graham Borland您好,谢谢您的快速回复。我的问题的核心是,如果在某个地方启动一个,比如说“一般事务”,并且在事务之间有很多代码,这是没有问题的。发现的大多数示例都是简单地启动一个事务,然后立即执行一个查询或通过某个对象执行max循环,然后执行查询。问题是,举例来说,当制作一个只创建和填充数据库的程序时。我可以在main方法上启动一个事务,在该事务保持打开状态时运行整个程序的其余部分,然后在完成所有操作后,成功并结束该事务,最后一次执行程序中生成的所有查询。我知道这当然是夸大了,也不是想要的。在长时间运行的XML解析操作期间打开事务是没有问题的。正如你自己所注意到的,它提供了很多好处,包括速度。OK,这就是我所需要知道的,谢谢:)我不能羞耻地给你的帖子+1,因为我没有足够的声誉。嗨,格雷厄姆·博兰,谢谢你的快速回复。我的问题的核心是,如果在某个地方启动一个,比如说“一般事务”,并且在事务之间有很多代码,这是没有问题的。发现的大多数示例都是简单地启动一个事务,然后立即执行一个查询或通过某个对象执行max循环,然后执行查询。问题是,举例来说,当制作一个只创建和填充数据库的程序时。我可以在main方法上启动一个事务,在该事务保持打开状态时运行整个程序的其余部分,然后在完成所有操作后,成功并结束该事务,最后一次执行程序中生成的所有查询。我知道这当然是夸大了,也不是想要的。在长时间运行的XML解析操作期间打开事务是没有问题的。正如你自己所注意到的,它提供了很多好处,包括速度。OK,这就是我所需要知道的,谢谢:)我不能羞耻地给你的post+1,因为我没有足够的声誉。