Как узнать, когда обновлять базу данных - Android - PullRequest
0 голосов
/ 23 апреля 2011

Привет, я создаю приложение для Android, которое содержит базу данных.У меня вопрос, как я могу узнать, было ли приложение обновлено?Я имею в виду, я знаю, что метод onUpgrade вызывается, когда DATABASE_VERSION from -

public DataBaseHelper(Context context) {        
    super(context, DB_NAME, null, DATABASE_VERSION);
    this.myContext = context;
}

ниже, чем версия приложения, но как мне увеличить его после обновления, чтобы приложение не обновлялосьсам все время?

Ответы [ 2 ]

6 голосов
/ 23 апреля 2011

Вам не нужно следить за номером версии.После вызова onUpgrade () Android автоматически позаботится обо всем этом.onUpgrade () будет автоматически вызываться при следующем обновлении (т.е. вы снова увеличили DATABASE_VERSION).

Чтобы быть еще яснее: просто сохраняйте поле static final int DATABASE_VERSION, которое вы увеличиваете во время разработки, каждый раз, когда вы вносите изменения в структуру базы данных.

Вы создаете класс, который расширяет SQLLiteOpenHelper , который в основном выглядит следующим образом:

public class ContentDatabase extends SQLiteOpenHelper {

  // Whenever you change the DB structure, increment DATABASE_VERSION (it starts from 1, so  your first upgrade should be 2)
  // - note it's only used for upgrades; if it's a new install, onUpgrade won't be called and everything is done by onCreate instead
  private static final int DATABASE_VERSION = 6;

  public ContentDatabase(Context context) {
    super(context, DATABASE_NAME, null, DATABASE_VERSION);
  }

  public void onCreate(SQLiteDatabase db) {
    // Code to create the most recent version of your database 
    // i.e. CREATE TABLE xxx (....) 
  }

  @Override
  public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    // Code to update an existing database structure to the most recent 
    // version. 

    if (oldVersion < 2) {
      // do something to upgrade the DB to version 2
    }

    if (oldVersion < 3) {
      // do something to upgrade the DB to version 3
    }

    if (oldVersion < 6) {
      // Let's assume you added a new table in v4, and then added a field to that new table in v6
      if (oldVersion < 4) {
        // add the v6 version of the new table to the DB
      }
      else {
        // add the new field to the existing v4 table in the DB
      }
    }

  }
}

Каждый раз, когда вам нужно изменить структуру таблицы (т.е. добавить дополнительные столбцы или таблицы), вы увеличиваете переменную DATABASE_VERSION на единицу и пишетекодируйте соответственно для методов onCreate () и onUpdate ().Эти методы вызываются автоматически Android.

0 голосов
/ 23 апреля 2011

Рассмотрите возможность использования SharedPreferences в контексте приложения, вы можете отслеживать там lastVersion, и ваше приложение проверит его на onCreate (), чтобы увидеть, соответствует ли lastVersion версии этого приложения.

Он постоянен между обновлениями, но не между установками.

вы можете сделать так, чтобы версия 0 равнялась отсутствию, которое требуется для настройки новой базы данных. Используя SharedPreference mPref = getSharedPreference(String,int) Затем вы можете иметь код как

if(mPref.getInt("DB_VERSION", 0) == 0 ) { 
  no db yet so create one
} else {  db is there, 
    if (mPref.getInt("DB_VERSION",0) != DATABASE_VERSION) { 
             do some special update stuff here
    } 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...