我知道这是旧的文章,你肯定找到了解决办法,但我发现这个问题的有效(upvoted)和它没有得到答复,这里是我的2美分:
调用onUpgrade()
从onCreate()
应该工作(我没有测试它),但有一个更好的方法来组织你的帮手(见下面的片段)。关键是这两种方法都只是切入点。
public class SampleDBHelper extends SQLiteOpenHelper {
private static final String DB_NAME = "mydatabase";
private static final int DB_VERSION = 2;
public SampleDBHelper(Context context) {
super(context, DB_NAME, null, DB_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
updateDatabase(db, 0, DB_VERSION);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
updateDatabase(db, oldVersion, newVersion);
}
private void updateDatabase(SQLiteDatabase db, int oldVersion, int newVersion) {
if (oldVersion < 1) {
// Create 3 initial tables
}
if (oldVersion < 2) {
// Create the new table
}
}
}
这种辅助性的优势:
- 你永远需要改变
onCreate()
和onUpgrade()
方法,只有updateDatabase()
。
- 对于每一个新版本,你只需要:
- 增量DB_VERSION
- 添加新的部分
if (oldVersion < N) { // do the upgrade }
。
信用:从Head First Android Development强烈的启发,黎明和大卫·格里菲斯,奥赖利,2015年
为什么创建'onCreate'只有三个表? –
感谢您的回复。这只是一个例子。我想在我的应用程序中处理onUpgrade()方法 –