1) AFAIK, при обновлении старый комплект приложений заменяется новым комплектом приложений.Но пользовательские данные остаются нетронутыми.то есть копия базы данных sqlite, которую приложение изменяет с использованием пользователем, не удаляется / заменяется.
2) Таким образом, вы можете отправить изменения в БД в виде запросов:
a) Новые таблицы вводятся в виде CREATE TABLE
запросов.
b) Изменения в структуре таблиц выполняются как ALTER TABLE
запросов.
3) Теперь одна проблема заключается в том, что вы этого не сделалиподумайте обо всем этом, когда вы отправили старую версию.Итак, как вы убедитесь, что запросы 2a и 2b выполняются только при обновлении?
a) Когда вы впервые получаете контроль в приложении, прежде чем разрешить взаимодействие с пользователемвключите пустышку SELECT SINGLE * FROM <tablename>
в таблицу, которую вы «изменили» в новой версии.
b) Используйте sqlite3_column_count
и sqlite3_column_name
, чтобы узнать, какой версии приложения соответствует БД [old илиnew].
c) Если это новая версия (т.е. новые столбцы уже существуют), ничего не делайте, иначе вызовите запросы, которые я упоминал ранее как 2a и 2b .