我在我的数据库中添加了新列(我有关于此数据库的数据)
我有这段代码:
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
if (newVersion > oldVersion) {
db.execSQL("ALTER TABLE MEN ADD COLUMN New_Pulse INTEGER DEFAULT 0");
}
}
但它不会起作用,我从哪里获得oldVersion和newVersion?
现在我这样做了:
try{
db.execSQL("ALTER TABLE MEN ADD COLUMN New_Pulse INTEGER DEFAULT 0");
}
catch (Exception e) {
// TODO: handle exception
}
它适合我 - 但我知道它的丑陋解决方案
答案 0 :(得分:0)
您不必亲自检查; SQLiteOpenHelper自动完成!当您输入比以前更高的版本号时,帮助程序会调用onUpgrade()
方法,您应该在此处理升级时的操作。
....
....
mySqlHelper = new mySqlHelper (context, DATABASE_NAME, null, DATABASE_VERSION);
private static class MySQLHelper extends SQLiteOpenHelper {
public MySqlHelper(Context context, String name, CursorFactory factory, int version) {
super(context, name, factory, version);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// upgrade code..
// drop tables
onCreate(db);
}
}