Страницы

Поиск по вопросам

суббота, 7 декабря 2019 г.

Как правильно обновить базу данных?

#java #android #sqlite


В первой версии приложения была копирована для работы приложения из assets база данных,
с множеством таблиц для чтения, в которую я также добавил свою одну таблицу для постоянного
редактирования. Сейчас считаю это ошибкой, лучше бы в отдельном файле базы данных сделал
её. Теперь, во второй версии приложения, необходимо частично обновить таблицы для чтения. 

Как это лучше сделать? 

Есть две идеи:



Отредактировать базу данных из assets(таблицы для чтения)
Обновить базу данных приложения(каждое поле отдельно)


Отредактировать базу данных из assets(таблицы для чтения)
Скопировать таблицы для чтения из assets в базу данных приложения, оставив одну таблицу
для редактирования



Второй пункт думаю лучше будет, но получится ли его реализовать? 

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


Ответы

Ответ 1



Стандартный механизм для обновление БД предусмотренный системой это наследование от SQLiteOpenHelper и реализация метода SQLiteOpenHelper.onUpgrade. onUpgrade принимает 2 параметра, предыдущая версия БД и новая версия, в зависимости от них необходимо будет в методе onUpgrade() реализовать ветвление и провести внутри вызов SQL инструкции ALTER TABLE или если все совсем плохо (модификации очень большие), то завести еще одну промежуточную табличку с помощью которой провести апгрейд БД. Начальные данные для обновляемых данных конечно же лучше положить опять в asset P.S. Версия БД задается в конструкторе хелпера и обычно задается просто константой в коде.

Ответ 2



Получится. Sqlite умеет работать с базой из нескольких файлов. Посмотрите ответ из этого обсуждения.

Комментариев нет:

Отправить комментарий