在关闭我的应用程序之前,我可以看到我的SQLite数据库中有一个名为“样式”的表。该表具有多个条目。但是,一旦我关闭我的应用程序并重新打开它,如果我执行原始查询“ SELECT * FROM styles”,则不会返回任何结果。
我通过以下方式创建我的SQLiteDatabase:
SQLiteDatabase database = SQLiteDatabase.openOrCreateDatabase(getDatabaseDirectory(), null);
boolean hasEntries = database.rawQuery("SELECT * FROM styles", new String[]{}).moveToFirst();
// hasEntries is always false
...
database.close()
方法getDatabaseString()的实现如下:
private File getDatabaseDirectory() {
File dbpath = this.context.getDatabasePath( "MyAppsDatabase" );
if (!dbpath.getParentFile().exists()) {
dbpath.getParentFile().mkdirs();
}
return dbpath;
}
这是否会在UI线程之外的其他线程上运行,以防万一?我已经看到了一些示例,其中有人在获取数据库路径时覆盖了数据库目录,但是我认为这不是我的问题。任何建议将非常有帮助。谢谢!
最佳答案
我没有使用SQLiteDatabase.openOrCreateDatabase(...)
创建数据库实例,而是按照以下说明创建了SQLiteOpenHelper
:
https://developer.android.com/training/data-storage/sqlite
调用sqLiteOpenHelper.getWritableDatabase()
可以对问题进行排序。