重新打开 android 应用程序时 SQLite 表为空

SQLlite Tables Empty when reopen android app

我可以在关闭我的应用程序之前看到我的 SQLite 数据库中有一个名为 'styles' 的 table。 table 有多个条目。但是,一旦我关闭我的应用程序并重新打开它,如果我执行原始查询 "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() 解决问题。