0

我在我的数据库上添加了新列(我在这个数据库上有数据)

我有这个代码:

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

它对我有用 - 但我知道它的丑陋解决方案

4

1 回答 1

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);
    }
}
于 2012-04-16T12:19:33.363 回答