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 に答える