我正在使用SQLiteOpenHelper类来创建,打开数据库。对于我的应用程序我正在创建可写对象SQLiteDatabase,我用它来读取和写入数据库的数据。此对象对于主类是静态的,并且在所有应用程序中用于读入写入数据库。我的应用程序在模拟器上正常工作。但是在一些读写查询触发后的设备上。为什么会发生这种情况,如果有任何人有解决方案可以帮助我。
答案 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()只是按照预期的方式工作。
我所做的是运行读取和写入数据库“同步”的所有方法,这意味着无论您有多少线程,您都不会同时读取或写入数据。
此致 托拜厄斯