对于SQLiteOpenHelper,如果我在onCreate
中添加新表,我是否必须在onUpgrade
内做任何事情?我正在添加一个全新的表格。我相信我必须更改版本号,但onUpgrade
应保持为空。这是对的吗?
答案 0 :(得分:2)
如果您希望应用的现有安装添加此新表,那么您必须增加版本并提供合适的onUpgrade()
实施,并在onCreate()
中添加表格(你说你已经完成了)。
空onUpgrade()
实施是不够的;它必须真正做点什么。有些人会删除所有表格并直接调用onCreate()
,但如果您尝试保留现有数据,这显然效果不佳。我通常使用直播switch
成语,因此如果用户不止一个版本(例如,您发布版本3而用户仍然使用版本1),他们将按顺序执行所有必要的升级:
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
switch (oldVersion) {
case 1:
db.execSQL("CREATE TABLE " + ...);
// no break statement, so case 2 will execute after this.
case 2:
// more execSQL(), etc
}
}
答案 1 :(得分:1)
onCreate()
。所以你需要在onUpgrade()
中创建新表。请务必增加数据库的版本号。
我建议将代码放在一个帮助器方法中创建表,以便您可以从两个回调方法中调用它。如果您需要更改代码以创建表,这将减少出错的可能性。
答案 2 :(得分:0)
onUpgrade。
要实现它,您必须使用所做的任何更改重新创建表,并复制任何现有数据。关于这个主题有很多教程。
如果您还在学习,则没有必要实施,但如果您没有对架构进行任何更改,则需要从设备上卸载应用程序或获得更改#39不适用。