根据我之前提出的问题(参见这里),如果我在分发应用程序后进行更改并添加新数据,则删除和重新创建表将无法很好地工作,因为用户将失去所有数据。针对此问题有没有推荐的处理策略?或者你是否有一些示例可以给出,告诉我如何解决这个问题?
谢谢。 编辑: 大概会像这样:
谢谢。 编辑: 大概会像这样:
@Override
public void onUpgrade (SQLiteDatabase db, ConnectionSource connectionSource, int oldVersion, int newVersion){
// TODO Auto-generated method stub
//This is why I'm currently trying
while(oldVersion < newVersion){
switch(oldVersion){
case 2:
//add new datas from version 2 here
break;
case 3:
//add new datas from version 3 here
break;
default:
break;
}
oldVersion++;
}
/*
try {
Log.i(DatabaseHelper.class.getName(), "onUpgrade");
TableUtils.dropTable(connectionSource, Category.class, true);
TableUtils.dropTable(connectionSource, Level.class, true);
TableUtils.dropTable(connectionSource, Hint.class, true);
TableUtils.dropTable(connectionSource, HintCount.class, true);
TableUtils.dropTable(connectionSource, Question.class, true);
// after we drop the old databases, we create the new ones
onCreate(db, connectionSource);
} catch (SQLException e) {
Log.e(DatabaseHelper.class.getName(), "Can't drop databases", e);
throw new RuntimeException(e);
}
*/
}
onUpgrade
中为该列中的现有对象设置一些默认值。我必须承认这不会非常优雅。 - Mikita Belahlazau