gpt4 book ai didi

android - HTC Desire 中的数据库锁定问题

转载 作者:太空宇宙 更新时间:2023-11-03 11:35:48 24 4
gpt4 key购买 nike

在我的应用程序中,一项服务是从服务器获取数据并将其插入表 A

如果我转到特定的 UI,我需要列出来自另一个 table B 的数据 if background 操作正在做它会产生数据库锁定异常。我有两个数据库 每个操作在两个不同的表上并行完成。

它在三星 gt15801 中运行良好。但是htc希望它会生成数据库锁定 错误。

HTC desire - insertion process takes 91 seconds.

Samsung gt15801 - insertion process takes 21 seconds.

最佳答案

尝试使用一个 SqliteDatabaseHelper 并使其成为单个实例。之后不要在完成操作后关闭 SqliteDatabase 实例

你可以为看到这个的数据库实现锁定

http://www.sqlite.org/lockingv3.html

当你开始一个有很多并发操作的数据库操作时,你必须使用

database.beginTransaction(); /* for start transaction */

完成对数据库的操作后,您可以使用

database.setTransactionSuccessful();    
database.endTransaction();

但是如果您在事务之间给出错误,则不要设置 database.setTransactionSuccessful(); 以便事务将回滚。

您还可以在出错时通过 database.inTransaction(); 检查当前数据库是否处于事务中,如果它返回 true,那么您处于事务中,否则您不处于事务中

也可以通过调用

检查当前数据库是否已锁定
database.isDbLockedByCurrentThread();
database.isDbLockedByOtherThreads();

这将返回 bool 值。

如果多个线程试图同时读取和写入您的数据库,您还可以设置是否要锁定您的数据库

database.setLockingEnabled(boolean);

以上删除的方法已弃用,因此请不要使用。

关于android - HTC Desire 中的数据库锁定问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6951506/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com