我的应用程序正在生产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的人创建重复的列?对于较新的版本,它运行两次是否重要?
我的问题基本上是,如何绕过未升级人员的缺失列?
答案 0 :(得分:1)
您需要为每个数字
创建一个if语句if(oldVersion < 5)
... sql alter statement for the first new column ...
if(oldVersion < 6)
... next sql alter statement