Обработка обновления базы данных sqlite на предварительно заполненной базе данных - PullRequest
0 голосов
/ 25 декабря 2018

У меня возникают проблемы после выпуска новой версии моего приложения для Android в Android Studio.

Вот проблема: У меня есть приложение для викторины с базой данных SQlite, в которой вопросыи ответы были заполнены браузером базы данных SQLite.Теперь, когда я добавляю новые вопросы в таблицы базы данных и создаю новую версию базы данных, база данных, кажется, не отражается в обновленном приложении.Учебники, которые я нахожу в Интернете по обновлению базы данных, распространяются только на базу данных, которая создается при запуске приложения.как this

Вопрос: Как мне выполнить обновление базы данных, только когда я добавляю новые записи в уже существующую таблицу в SQLite?

То, что я пробовал: (1) в методе DatabaseOpenHelper OnUpgrade() я отбросил таблицы, в которые были добавлены новые записи.

результат: Запуск приложения при сбое

(2) Оставьте метод OnUpdrade() пустым.

результат: Недавно добавленные записи не отражают

Дополнительные данные: метод DatabaseOpenHelper OnCreate ()также пусто

код

@Override
public void onCreate(SQLiteDatabase db) {

}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

    db.execSQL("drop table if exists "+ DatabaseDescription.LectureNotes.TABLE_NAME);
    db.execSQL("drop table if exists "+ DatabaseDescription.QuestionAnswer.TABLE_NAME);
    db.execSQL("drop table if exists "+ DatabaseDescription.Test.TABLE_NAME);
    db.execSQL("drop table if exists "+ DatabaseDescription.Subjects.TABLE_NAME);
    db.execSQL("drop table if exists "+ DatabaseDescription.Topics.TABLE_NAME);
    db.execSQL("drop table if exists "+ DatabaseDescription.Year.TABLE_NAME);
}

1 Ответ

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

Предварительно заполненная база данных будет скопирована из папки ресурсов только один раз.

Чтобы обновить новую версию предварительно заполненной базы данных, вам нужно будет открыть копию новой обновленной базы данных, а затем скопировать соответствующие строки или таблицы в существующую базу данных, если в существующей базе данных есть данные, которые необходимыбыть сохраненным (например, ответы на вопросы).

вот пример, который делает выше Обновление БД.Библиотека Sqlite-asset-helper

...