我知道这是一篇旧帖子,您肯定已经找到了解决方案,但我发现这个问题有效(赞成)并且由于它没有收到答案,这是我的 2 美分:
调用onUpgrade()
fromonCreate()
应该可以工作(我没有测试它),但是有一个更好的方法来组织你的助手(见下文的片段)。关键是这两种方法都只是入口点。
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的强烈启发,Dawn 和 David Griffiths,O'Reilly,2015