在关闭我的应用程序之前,我可以看到我的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()可以对问题进行排序。

07-27 13:40