Экспортированная база данных SQLite не обновлена - PullRequest
0 голосов
/ 18 декабря 2018

Эта проблема касается только устройства SDK 28 (эмулятор).Моя база данных SQLite, созданная с помощью SQLiteOpenHelper, прекрасно работает в приложении, однако, когда я экспортирую ее на диск (либо с помощью Android studio, либо с помощью кода), большая часть ее данных теряется.Изменения, внесенные в эту базу данных в приложении, немедленно отражаются в приложении, но не отражаются в экспортированном файле базы данных.Файл базы данных, который я пытаюсь экспортировать, находится здесь: DDMS -> проводник файлов -> данные -> данные -> имя моего пакета -> базы данных -> файл моей базы данных.На устройстве SDK <28 файл базы данных отлично экспортируется. </p>

1 Ответ

0 голосов
/ 19 декабря 2018

Я решил проблему самостоятельно.

Я обнаружил, что папка базы данных, помимо самой базы данных, содержит два дополнительных файла.Содержимое папки выглядело так:

  • MyDatabase.db
  • MyDatabase.db-shm
  • MyDatabase.db-wal

Без этих файлов база данных является неполной.

До SDK 28 существовал только один дополнительный файл, который не влияет на целостность базы данных:

  • MyDatabase.db-journal

Решением было выполнение .setWriteAheadLoggingEnabled (false) для единственного экземпляра моей базы данных в SQLiteOpenHelper:

synchronized static MyDatabase getInstance(Context context) {
    if (instance == null) {
        instance = new MyDatabase(context.getApplicationContext());
        instance.setWriteAheadLoggingEnabled(false);
    }
    return (instance);
}

Это восстанавливает параметр ведения журнала базы данных, используемый вSDK <28 по умолчанию.Это дает мне один файл базы данных, который содержит полные и актуальные данные, не зависящие от дополнительных файлов. </p>

...