Есть ли способ сбросить изменения в файле базы данных SQLite в Android? - PullRequest
0 голосов
/ 20 октября 2019

Я создал очень большое приложение, которое использует много чтения / записи SQLite. Поскольку я не могу легко просматривать базу данных в телефоне, в приложении есть функция резервного копирования, которая загружает файл БД на сервер (который предназначен для разработки на моем локальном компьютере).

Для начала у меня было начальное состояние базы данных как на сервере, так и в телефоне. Затем я внес некоторые изменения в базу данных телефона (добавил кое-что в нее). Когда я перечисляю данные, я вижу новые вещи в списке.

Затем я хочу сделать резервную копию базы данных - я записал все перед запуском резервного копирования - место, откуда берется файл db (это / data / user / 0/ APPLICATION_PACKAGE / базы данных / DATABASE_FILENAME). Также я стер все файлы на сервере. Когда резервное копирование завершено, я проверил новый файл БД на сервере - размер файла в байтах совпадает, но в файле НЕТ изменений ???

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

Как этовозможно? Есть ли способ записать изменения в файл базы данных, чтобы я мог регулярно его резервировать?

1 Ответ

1 голос
/ 20 октября 2019

Скорее всего, включен режим wal (запись с опережением записи). Чтобы отключить его, нужно сделать что-то вроде этого:

public class MyDbHelper extends SQLiteOpenHelper {

    //...

    @Override
    public void onOpen(SQLiteDatabase db) {
        db.disableWriteAheadLogging();
        super.onOpen(db);
    }

    //...
}

https://www.sqlite.org/wal.html

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