im используя SQLite OpenHelper для обработки версии базы данных, и это сработало нормально, моя проблема в том, что если я установил некоторые обновления, а новые пользователи установили мое приложение, то не получит UPGRADES, потому что он будет запускать onCreate с использованием последнего DB_VERSIONSQLite необходимо обновить на FirstRun
объясняющую:
private static final int DB_VERSION = 3;
Context context;
public DB(Context c) {
super(c, DB_NAME, null, DB_VERSION);
context = c;
}
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE table1...");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
Log.d("DBUpgrade", "Atualizando DATABASE");
switch (oldVersion) {
case 2: {
execSQLFromFile(db, "sql2");
}
case 3: {
execSQLFromFile(db, "sql3");
}
}
сценариев:
пользователя 1 установил с момента выпуска первого приложения -> он получит все обновления
устанавливается в первый раз в его устройстве последний релиз моего APK, который имеет db_version Пользователь 2 3 -> он не получит обновления, только OnCreate
OFC я знаю, почему это происходит но я не знаю, как его решить простым способом, единственный способ, которым я должен был называть onUpgrade(db, 0, DB_VERSION);
, это ввести в onUpgrade, но не называть случаи внутри коммутатора. Я не знаю, почему, поскольку я отправляю 0, он должен позвонить case: 2, потому что у меня нет перерыва, не так ли?
но делать это я потерять OnUpgrade для следующей версии, он всегда будет проверять oldVersion и повторить тот же код, так что это будет крах, потому что уникальный столбец, изменять столбцы ничего
так я все еще закончилось без пути OnFirst установки делать обновления слишком установлен в первый раз в его устройстве последний релиз моего APK, который имеет db_version = (
hmm, я получил, onUpgrade просто думает о пользователях, которые уже имеют базу данных и не хотят потерять данные, поэтому, если я что-то меняю на onUpgrade, я тоже должен изменить onCreate? –
@SenhorObvio: «Так что, если я что-то меняю на onUpgrade, я тоже должен изменить onCreate?» -- да. 'onCreate()' всегда создает самую последнюю структуру базы данных. 'onUpgrade()' применяет изменения к старым структурам базы данных, чтобы они соответствовали самой последней структуре базы данных. – CommonsWare
ОК, я получил его, спасибо –