Използване на помощник на базата данни на друг клас

Пиша клас адаптер за база данни за приложение за android и планирам да създам специфични за таблицата класове адаптери. Ще структурирам цялото нещо, както Шон го е изложил в тази публикация. Наличието на множество помощни класове на база данни ми се струва излишно, така че се чудех дали е възможно да се посочи един помощен клас на база данни, вместо да се създават множество. Ето раздела, за който говоря:

public static class DatabaseHelper extends SQLiteOpenHelper {
    DatabaseHelper(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }
    public void onCreate(SQLiteDatabase db) {
        try {
            db.execSQL(DATABASE_CREATE);
        }
        catch (SQLException ex){
            ex.printStackTrace();
        }
    }
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        Log.w(TAG, "Upgrading database from version " + oldVersion + " to " + newVersion + ", which will destroy all old data");
        db.execSQL("DROP TABLE IF EXISTS Exercise");
        onCreate(db);
    }
}

person Greener    schedule 09.11.2012    source източник


Отговори (1)


Открих решение, което изглежда доста добро за мен, моля, обмислете го. Създайте един вид помощник за базова база данни и създайте всички таблици там като

public static class BaseDbHelper extends SQLiteOpenHelper {
    BaseDbHelper (Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }
    public void onCreate(SQLiteDatabase db) {
        //Create all tables here
    }
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        //Drop all tables here
        onCreate(db);
    }
}

След това можете да наследите от BaseDbHelper и да създадете специфични методи за конкретна таблица. В този случай няма да дублирате кода и няма да пропуснете инициализацията, който и помощник да извикате първи.

person Sergey Dmitriev    schedule 09.11.2012