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