Меняет ли создание таблицы после того, как база данных уже создана, версию базы данных в SQLite? - PullRequest
1 голос
/ 27 января 2012

Я создал базу данных SQLite для приложения Android.Изначально в базе данных было несколько таблиц.

В конкретной версии приложения я добавил код, который создал новую таблицу (например, db.execSQL («создать таблицу, если она не существует» + имя_таблицы ...), но никогда не изменялсяверсия базы данных от 1 в конструкторе SQLiteOpenHelper.

Теперь я хочу обновить базу данных. Мой вопрос :

Будет ли существующая измененная база данных по-прежнемуверсия 1 или номер версии базы данных автоматически увеличивался при создании новой таблицы (даже если база данных не была обновлена ​​с помощью метода onUpgrade (...))?

Заранее спасибо.

Ответы [ 3 ]

1 голос
/ 27 января 2012

версия базы данных - это то, что вы назначили в SQLiteOPenHelper, теперь у вас есть 2 разные структурированные базы данных с одинаковым номером версии, это действительно BAD, и onUpgrade никогда не будет вызываться из-за того же номера версии.

1 голос
/ 27 января 2012

Когда вы расширяете свой класс SQLiteOpenHelper, вы определяете, какую версию базы данных использовать.Например, следующим образом:

private static class DbWordsHelper extends SQLiteOpenHelper {

    private DbWordsHelper(Context context) {
        super(context, DB_NAME, null, DB_VERSION);
    }

Если вы обновляете свою базу данных, вы должны вручную изменить DB_VERSION в своем коде и пересобрать приложение.Новая версия должна быть выше предыдущей.Когда SQLiteOpenHelper обнаруживает, что номер вашей версии был изменен, он вызывает метод onUpgrade, где вы должны предоставить логику, как обновить вашу базу данных:

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

        // Here in the future should be method that change the schema of the
        // database. Now we just delete
        try {
            db.execSQL(DROP_TABLE_WORDS);
        } catch (SQLException e) {
            Log.e(TAG, "Error while updating database" + TABLE_WORDS, e);
        }

        onCreate(db);

    }

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

1 голос
/ 27 января 2012

Это версия базы данных, а не версия таблицы.Таким образом, удаление / повторное создание таблицы не повлияет на версию базы данных.

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