android sqlite应用程序正在设备上强行关闭

时间:2010-11-18 09:50:20

标签: android sqlite

我正在使用SQLiteOpenHelper类来创建,打开数据库。对于我的应用程序我正在创建可写对象SQLiteDatabase,我用它来读取和写入数据库的数据。此对象对于主类是静态的,并且在所有应用程序中用于读入写入数据库。我的应用程序在模拟器上正常工作。但是在一些读写查询触发后的设备上。为什么会发生这种情况,如果有任何人有解决方案可以帮助我。

2 个答案:

答案 0 :(得分:0)

不建议将帮助程序作为静态实例。相反,您应该在每次需要访问数据库时进行实例化。可能发生的事情是你的数据库连接被Android关闭(因为它需要内存,因为有太多的打开连接,...),当你进行查询时,你不会检查连接是否仍然打开。

您可以阅读this tutorial以了解如何正确完成此操作。

基本上在一项活动中,这个想法:

private void reloadData() {
    MyDBHelper db = new MyDBHelper(this.getApplicationContext());
    db.open();
    Cursor c = db.query(...);
    db.close();

    // Update your data using the cursor
}

答案 1 :(得分:0)

几个星期前我遇到了同样的问题,我发现了page,这正是错误的。 SQLite在Android中是错误的,并且以错误的方式实现,因此您不能同时读取和写入数据库/表的线程。
setLockingEnabled()只是按照预期的方式工作。

我所做的是运行读取和写入数据库“同步”的所有方法,这意味着无论您有多少线程,您都不会同时读取或写入数据。

此致 托拜厄斯