android:在sqlite中的onUpgrade对我不起作用

时间:2012-04-16 12:03:51

标签: android

我在我的数据库中添加了新列(我有关于此数据库的数据)

我有这段代码:

@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
}

它适合我 - 但我知道它的丑陋解决方案

1 个答案:

答案 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);
    }
}