Обновление новой версии для магазина приложений с использованием другой структуры db sqlite

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

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

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

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

Например:

В первом выпуске я создаю таблицу1 с col1, col2

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

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

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

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

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

  • Ошибка sqlite make statement - нет такой таблицы
  • получение ошибки при попытке создать базу данных sqlite «Не удалось создать таблицу» IOS7
  • libsqlite в симуляторе и компиляции iOS
  • как добавить столбец в таблице sqlite в SWIFT
  • Преобразование текста в номера
  • Получить данные nsdata из базы данных sqlite и просмотреть их в webView
  • Шаги по созданию реляционной базы данных (sqlite) в быстрой
  • Процедура библиотеки SQLite3 вызвана из последовательности
  • Как получить код ошибки, если sqlite3_prepare_v2 () возвращает один?
  • Вьетнамский текстовый поиск в Юникоде в SQLite
  • добавить столбец в таблицу, если его не существует в sqlite
  • Interesting Posts

    Как я могу упростить свою программу и все мои операторы if?

    Ответьте, ответьте и любите в iOS 5 Twitter с картой учетных записей

    Как установить заставку для iOS в PhoneGap

    Почему navigationItem.titleView выравнивается влево при вызове currentmodalviewcontroller?

    Appium на реальных устройствах iOS

    Градиенты на UIView и UILabels на iPhone

    Удаление слов из NSString

    как конвертировать аудио CMSampleBufferRef в данные и воспроизводить аудио в другом устройстве с полученными данными

    Ошибка при подготовке модели CoreML: «<something>» не поддерживается для генерации кода CoreML

    Быстрая стирание строк при сериализации в JSON с использованием Codable

    Можно ли использовать OpenGL ES на iOS через RubyMotion?

    проверить объект coredata на nil

    Как установить индикатор активности на пользовательской кнопке в iphone

    Пригласите пользователей facebook из приложения iOS в facebook: приглашение не отправляется

    «Попытка вставить строку 0 в раздел 0, но после обновления« 0 »только 0 строк в разделе« Ошибка

    Давайте будем гением компьютера.