2015-09-09 5 views
2

У меня есть приложение, которое позволяет пользователям добавлять некоторые данные в базу данных.Android - сохранить данные после обновления базы данных

Если бы я хотел внести обновление в приложение с некоторыми изменениями в базу данных, после обновления база данных будет воссоздана, и, таким образом, пользователь потеряет все данные, которые он создал в приложении.

Есть ли способ «сохранить» данные пользователя перед воссозданием базы данных?

спасибо!

+0

Скопируйте старые данные из одной базы данных – kgandroid

+5

Используйте 'Alter' в onUpgrade SQLiteDatabaseHelper после проверки версии. – Shahzeb

ответ

2

Использование public abstract void onUpgrade (SQLiteDatabase db, int oldVersion, int newVersion) Вызывается, когда база данных нуждается в обновлении. Реализация должна использовать этот метод, чтобы отбрасывать таблицы, добавлять таблицы или делать что-то еще, что необходимо для обновления до новой версии схемы.

Документацию по SQLite ALTER TABLE можно найти здесь. Если вы добавите новые столбцы, вы можете использовать ALTER TABLE, чтобы вставить их в таблицу. Если вы переименуете или удалите столбцы, вы можете использовать ALTER TABLE для переименования старой таблицы, затем создать новую таблицу и затем заполнить новую таблицу содержимым старой таблицы.

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

+0

Спасибо Кирилл, поэтому метод 'onUpgrade' должен меняться каждый раз, когда я хочу обновить базу данных? –

+0

Да, если вы хотите, чтобы ваши пользователи по-прежнему имели старые данные при переносе. Также не забудьте использовать номер версии базы данных. Есть много руководств об этом и хороших документах: http://developer.android.com/reference/android/database/sqlite/SQLiteOpenHelper.html –

Смежные вопросы