Обновление базы данных SQLite - PullRequest
1 голос
/ 05 июля 2011

Я немного запутался с обработкой базы данных SQLite для Android.Я прошел учебные курсы, но не получил точную точку.

У нас может быть класс базы данных, который расширяет SQLiteOpenHelper, и может переопределить метод onCreate() и создать базу данных.

Обновление базы данных немного сбивает с толку.В следующем методе, как обращаться с вариантами onUpdate(SQLiteDatabase db,int old Version,int newVerison)

Означает ли это, что когда мы в первый раз создаем базу данных, версия равна 1. Затем однажды измененная версия становится 2. Затем, если мы хотим изменитьснова старая версия = 2, новая версия = 3
[onUpdate(SQLiteDatabase db,int old Version,int newVerison)]

Этот метод будет выполнен, когда мы передадим версию конструктора, как показано в следующем коде (как 2)

public DatabaseHelper(Context context) {
  super(context, dbName, null,2);
}

Мне нужно знать, нужно ли нам при вызове метода onUpgrade() передавать версию как 2 всегда или нам нужно увеличивать ее каждый раз для предыдущей версии.

Ответы [ 3 ]

9 голосов
/ 05 июля 2011

Увеличивайте версию своей базы данных каждый раз, когда меняется схема.

Вам никогда не нужно вызывать onUpgrade напрямую.Android будет вызывать его при необходимости, когда вы откроете базу данных, сравнивая версию базы данных с версией, которую ваш код указывает в качестве текущей версии.

Вам просто нужно обработать процесс обновления в onUpgrade -это может выглядеть примерно так:

int curVer = oldVersion;
while ( curVer < newVersion ) {
    curVer++;
    switch ( curVer ) {
        case 2: {
            // Upgrade from V1 to V2
            break;
        }
        case 3: {
            // Upgrade from V2 to V3
            break;
        }
        case 4: {
            // Upgrade from V3 to V4
            break;
        }
    }
}

Допустим, ваш newVersion равен 4, а oldVersion равен 1 - первая итерация увеличивает значение curVer до 2 и запускает код обновления с V2 до V3.Вторая итерация увеличивает curVer до 3 и запускает код обновления V2 до V3, последняя итерация увеличивает curVer до 4 и запускает код обновления V3 до V4.

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

0 голосов
/ 05 июля 2011

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

0 голосов
/ 05 июля 2011

Я использую этот подход , чтобы немного упростить эволюцию схемы базы данных, вы также можете найти ее полезной.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...