在我正在关注的教程以及更多地方我看到了这一点,
onUpgrade -> 删除表(如果存在),然后重新创建表。
这样做的目的是什么?
private static class DbHelper extends SQLiteOpenHelper{
public DbHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE " + DATABASE_TABLE + " (" +
KEY_ROWID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
KEY_NAME + " TEXT NOT NULL, " +
KEY_HOTNESS + " TEXT NOT NULL);"
);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS " + DATABASE_TABLE);
onCreate(db);
}
}
我同意当您升级时,您应该向数据库添加列或添加表。大多数 onupgrade 示例实际上很糟糕,因为为什么我要删除所有这些数据然后重新创建表?我发现这个博客条目我称之为Adams增量更新法。它还可以处理用户可能未在每个版本中升级您的应用程序的情况。
这是关于 sqlite onupgrade 的一个很好的博客,它不执行删除表操作。 http://blog.adamsbros.org/2012/02/28/upgrade-android-sqlite-database/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)