Вопрос по ios – Обновление новой версии в магазине приложений с другой структурой sqlite db

5

Я загрузил приложение в магазин приложений (версия 1.0). Мое приложение использует базу данных sqlite для хранения некоторых данных. Теперь я внес некоторые изменения в базу данных (я добавил 2 или 3 новых столбца в одну из таблиц в моей базе данных). Я хочу обновить предыдущую версию моего приложения новой версией 1.1 (которая имеет другую структуру БД). Теперь, когда пользователи, которые уже используют версию 1.0, обновляют приложение до версии 1.1, база данных уже присутствует в изолированной программной среде приложения и, следовательно, приложение указывает на версию 1.1, но моя база данных все еще старая. Я хочу иметь новую базу данных со старыми данными, если таковые имеются. Пожалуйста, помогите мне. Благодарю.

хорошо метод все еще действует. Вам просто нужно проверить существование таблицы метаданных, проверив возвращаемое значение оператора select. Затем, если он не существует, создайте его. He Shiming
Проверьте мой ответ здесь:stackoverflow.com/a/9851554/108574 для стратегии обновления базы данных. He Shiming
@HeShiming Спасибо, приятель. Но я уже загрузил версию 1.0 в магазин приложений, и у нее нет таблицы метаданных (для хранения версии базы данных, как вы предложили). Теперь я хочу загрузить новую версию, и в структуре БД произошли изменения. Итак, как я могу достичь этого сейчас? anshul

Ваш Ответ

2   ответа
12

что называется свойством user_version, вы можете выполнитьPRAGMA user_version запросить текущую версию схемы вашего приложения. Этот запрос может произойти в начале, когда ваше приложение запускается.

чтобы обновить этот user_version выполнить следующий запрос на обновлениеPRAGMA user_version = version_num;

Всякий раз, когда вы создаете sqlite db, рекомендуется указывать это свойство user_version, чтобы при обновлении в будущем вы могли запрашивать текущее значение. Проверьте, что это должно быть, и выполните оставшиеся изменения или создайте таблицы, чтобы обновить версию схемы.

Например:

В первом выпуске я создаю table1 с col1, col2

Я выполняю sql для создания table1 и, как только это будет успешно сделано, я выполняю прагму user_version = 1., поэтому это будет означать, что моя текущая версия схемы равна 1

В будущем выпуске я добавлю новый col3, мне нужно изменить версию схемы на 2

Сначала я запрашиваю user_version, проверяю его значение и, если оно равно 1, вам нужно запустить скрипт alter, чтобы добавить новый столбец и установить для версии пользователя значение 2.

В вашем случае, поскольку вы ранее не устанавливали user_version, было бы трудно отличить новую установку от сценария обновления. Поэтому на данный момент вы можете предположить, что если присутствует db, это сценарий обновления и выполнить сценарии изменения, а если нет, предположить, что это новый установить сценарий и запустить создание сценариев. Но посмотрите, сможете ли вы использовать вышеприведенную прагму для решения вашей проблемы в будущем, по крайней мере.

Error: User Rate Limit Exceeded
-1

является ли это старая база данных, и, если это так, есть процедура для создания новой базы данных с новой структурой (с временным именем), скопировать все данные из старой в новую, закрыть старую базу данных. & амп; удалите его, закройте новую базу данных, переименуйте ее, а затем, наконец, снова откройте ее, чтобы использовать обновленное приложение. Легко, быстро & amp; Вам не нужны глубокие знания SQLite, чтобы сделать это.

Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded anshul

Похожие вопросы