Таблицы SQLlite пустые при повторном открытии приложения android - PullRequest
0 голосов
/ 27 апреля 2020

Перед закрытием приложения я вижу, что в моей базе данных SQLite есть таблица с названием 'styles'. В таблице есть несколько записей. Однако, как только я закрываю свое приложение и снова открываю его, если я выполняю необработанный запрос «SELECT * FROM styles», результаты не возвращаются.

Я создаю свою базу данных SQLite:

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;
}

Это выполняется в потоке, отличном от потока пользовательского интерфейса, если это имеет какой-либо эффект? Я видел несколько примеров, когда отдельные лица переопределяли каталог базы данных при получении пути к базе данных, но я предполагаю, что это не моя проблема. Любые предложения будут очень полезны. Спасибо!

1 Ответ

0 голосов
/ 27 апреля 2020

Вместо создания экземпляра базы данных с помощью SQLiteDatabase.openOrCreateDatabase(...) я создал SQLiteOpenHelper, следуя инструкции, найденной здесь:

https://developer.android.com/training/data-storage/sqlite

Вызов sqLiteOpenHelper.getWritableDatabase() сортирует проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...