Каждый раз, когда изменяется структура базы данных в приложении, необходимо вызывать метод SQLiteOpenHelper.onUpgrade, в котором описывать сами изменения (добавление / удаление таблиц, полей или индексов). Естественно, эти же изменения необходимо указывать в обновленном запросе при создании базы в методе SQLiteOpenHelper.onCreate.

К примеру, сначала таблица mytable создавалась с помощью такого запроса

Затем в процессе разработки возникла необходимость в дополнительном поле category. Что мы должны сделать:

  1. Указать в запросе при создании базы данных что имеется это поле

2. Для пользователей, которые уже установили приложение, необходимо проапгрейдить нашу базу.

Прежде всего, проверим, есть ли у нас в классе-наследнике от SQLiteHelper константа, в которой хранится текущая версия базы данных, если нет, то добавим ее.

Убедимся, что мы передаем в конструктор правильную версию.

Теперь для изменения версии нашей базы нам просто необходимо увеличить значение VERSION до следующего целого значения, в нашем примере это будет 2.

При инициализации приложения (открытии) будет произведена проверка не изменилась ли версия базы данных (она может только увеличиваться), и если это так, то автоматически будет вызываться метод onUpgrade. Давайте на примере рассмотрим что должно происходить в нем.