2012-10-04 3 views
0

Я обновил базу данных приложения. Но пользователи, которые обновили приложение с рынка, будут видеть сбои при каждом запуске приложения, потому что новая структура базы данных несовместима со старой базой данных. Нехорошо попросить их удалить и установить приложение, мне нужно выполнить операцию только один раз на момент установки, т. Е. Очистить старую базу данных и создать новую. Это не следует вызывать каждый раз, когда приложение запускается только во время установки .. или когда приложение запускается в первый раз.Выполнять конкретную операцию во время установки apk?

Я думаю, что я четко определил свою ситуацию, теперь, куда я иду отсюда? Должен ли я отключать пользователей для удаления и установки приложения или его возможности делать то, что я просил?

ответ

2

Просто измените версию своей базы данных и замените onUpgrade на свой DatabaseHelper класс.

private static final int DATABASE_VERSION = 2; 

    @Override 
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
     // TODO Auto-generated method stub 
     Log.w(TAG, "Upgrading database from version " + oldVersion + " to " + newVersion 
       + ", which will destroy all old data"); 

     db.execSQL("DROP TABLE IF EXISTS " + TABLE_CREATION); 
     onCreate(db); 
    } 
+0

обновит переменную версии базы данных, но что будет в TABLE_CREATION? Все таблицы, которые я создаю в onCreate()? –

+0

да, это правильно – Aprian

+0

Цените помощь :) –

1

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

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

Еще одна вещь заключается в том, что вы можете обновить до новой базы данных в методе onUpgrade() класса DBHelper.

+0

да onUpgrade помог! –

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