0

正直に言います。前回のアップグレードで xcount 列が追加されたため、データベース バージョン 4 の新規インストールからアプリの新しいバージョン 5 に移行すると、sqlite の onUpgrade ビットを台無しにしました。列 xcount が重複しているため、アプリが強制的に閉じられるようになりました...ユーザーがまだデータを保持できる場所でこれを修正する方法を知っている人はいますか?

private static final String DATABASE_NAME = "data";
private static final String DATABASE_TABLE = "data";
private static final int DATABASE_VERSION = 5;

private final Context mCtx;

private static class DatabaseHelper extends SQLiteOpenHelper {

    DatabaseHelper(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL(DATABASE_CREATE);
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {  
        if (oldVersion < 2) {
            db.execSQL("ALTER TABLE data ADD COLUMN prior_reminder long DEFAULT 0");
        }
        if (oldVersion < 3) {
            db.execSQL("ALTER TABLE data ADD COLUMN is_repeating TEXT DEFAULT 'default'");
        }
        if (oldVersion < 5) {
            db.execSQL("ALTER TABLE data ADD COLUMN xamount long DEFAULT 0");
        } else {            
            db.execSQL("DROP TABLE IF EXISTS data");
            onCreate(db);
        }
    }
}
4

1 に答える 1