使用onUpGrade与多个版本的App添加列

时间:2015-06-18 21:35:22

标签: android database sqlite

我的应用程序正在生产4,5版本。在4到5之间,我使用alter语句向应用程序的数据库适配器添加了新列:

  public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        //add new columns
        String alter = "ALTER TABLE " + DATABASE_TABLE + " ADD COLUMN " +
                KEY_NEWCOLUMN_NAME+ " integer DEFAULT 0";
        db.execSQL(alter);

}

所以,在我的下一个版本(版本6)中,如果我想添加另一个新列。如果每个人都升级到版本5,那么我当然会删除当前的onUpgrade定义并更改它以添加新列。

但是,如果我的用户从版本4升级到版本6怎么办?如果我要保留两个alter table语句,那么对它们来说没问题,但是否会为版本5的人创建重复的列?对于较新的版本,它运行两次是否重要?

我的问题基本上是,如何绕过未升级人员的缺失列?

1 个答案:

答案 0 :(得分:1)

您需要为每个数字

创建一个if语句
if(oldVersion < 5)
  ... sql alter statement for the first new column ...

if(oldVersion < 6)
  ... next sql alter statement