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

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

2 Solutions collect form web for “Обновление новой версии для магазина приложений с использованием другой структуры db sqlite”

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 с вопросительным знаком
  • Вьетнамский текстовый поиск в Юникоде в SQLite
  • Как получить код ошибки, если sqlite3_prepare_v2 () возвращает один?
  • Как скопировать базу данных sqlite при запуске приложения в iOS?
  • добавить файл Seperate .sqlite в проект ios
  • Ошибка SQLite3 - iOS
  • конвертировать базу данных sqlite в nsdata и обратно
  • «база данных заблокирована» в sqlite в iPhone
  • va_args () вызывает EXC_BAD_ACCESS
  • iOS: приложение с несколькими запросами
  • libsqlite в симуляторе и компиляции iOS
  • Interesting Posts

    Xcode 7: Shadow НЕ показывает вокруг UIView в интерфейсе Builder

    Pixelart становится нечетким, используя UIImageView

    Отобразить список моих подписчиков Twitter в приложении ios 5?

    Xcode 9 Server exportArchive: exportOptionsPlist ошибка для ключа iCloudContainerEnvironment: ожидается один из {Разработка, Производство}

    Создать таблицу в PDF

    WebKit бросает исключение на iOS 8 для вызова setBeingRemoved:

    Загрузка iOS – UILabel, но отображение текста

    iOS – анимация флип-карты

    Как переименовать xib-файл в Xcode 4?

    Как поддерживать Universal Links в приложении iOS для сервера приложений и настройки?

    Правильный способ отображения экрана входа в систему, а затем меню UITabbarController

    Ошибка тайной консоли с IOHIDFamily

    FacebookSDK дважды вводит пользовательский интерфейс

    желтый Предупреждения: Условный отбор из UITextDocumentProxy в UIKeyInput всегда преуспевает

    Как я могу выполнить переходКомпьютер делегата UIPageViewController в Swift?

    PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.