重新打开 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()
解决问题。
我可以在关闭我的应用程序之前看到我的 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()
解决问题。