Android обновить схему БД SQLite? - PullRequest
9 голосов
/ 18 февраля 2011

Какова лучшая практика для обновления схемы БД?Я мог бы отправить текстовый файл с командами SQL.Приложение может проверить текстовый файл и выполнить необходимые команды.Я думаю, тогда у меня будет флаг, чтобы указать, что обновление было сделано.Я не нашел способа удалить файл в папке ресурсов из приложения, что было бы лучше всего сделать после обновления БД.

Есть мысли по этому поводу?

Ответы [ 4 ]

13 голосов
/ 18 февраля 2011

Возможно, вы захотите переопределить

onUpdate(SQLiteDatabase db,int old Version,int newVerison)

Следующее руководство поможет вам пройти процесс: http://www.codeproject.com/KB/android/AndroidSQLite.aspx

4 голосов
/ 18 февраля 2011

Как лучше всего обновлять схему БД?

Использовать SQLiteOpenHelper.Единственный раз, когда вы будете обновлять вашу схему, это когда вы обновляете приложение.Независимо от того, есть ли у вас команды SQL в файле, который вы читаете, или просто в вашем Java-коде, решать только вам.

Я предполагаю, что тогда у меня будет флаг, указывающий, что обновление выполнено.

Это часть того, что дает SQLiteOpenHelper.

Я не нашел способа удалить файл в папке ресурсов из приложения, который был былучшее, что можно сделать после обновления БД.

Это невозможно, извините.

1 голос
/ 18 февраля 2011

Как уже упоминалось, SQLiteOpenHelper - это то, с чего вы начинаете.

В зависимости от вашей среды и требований, Liquibase может стоить посмотреть. Это позволяет писать ваши операторы обновления более структурно и проще в использовании, чем простые операции SQL. Я не использовал его для Android, хотя.

0 голосов
/ 12 марта 2019

Если вы хотите обновить схему БД, используйте следующий код в расширенном классе SQLiteOpenHelper. Это обновит структуру таблицы и никогда не потеряет сохраненные данные из базы данных,

 public void onUpgrade(SQLiteDatabase db, int oldVersion, int 
    newVersion) {
      if (oldVersion < newVersion) 
      {
        db.execSQL("ALTER TABLE " + "TABLE_NAME" + " TO " + 
        "NEW_TABLE_NAME");

        db.execSQL("ALTER TABLE " + "TABLE_NAME" + " ADD COLUMN " + 
        "FIELD_NAME" + " INTEGER;");
      }   
    }

SQLite не поддерживает удаление или изменение столбцов.

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