0

私はAndroidアプリ用のデータベースアダプタークラスを作成しており、テーブル固有のアダプタークラスも作成する予定です。Shawnがこの投稿でレイアウトしたように全体を構造化するつもりです。複数のデータベースヘルパークラスを持つことは私には冗長に思えるので、複数のデータベースヘルパークラスを作成する代わりに、1つのデータベースヘルパークラスを参照することが可能かどうか疑問に思いました。これが私が話しているセクションです:

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);
    }
}
4

1 に答える 1

0

自分にぴったりの解決策を見つけました。考えてみてください。一種のベースデータベースヘルパーを作成し、そこにすべてのテーブルを作成します。

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から継承し、特定のテーブルに特定のメソッドを作成できます。この場合、最初に呼び出したヘルパーがどちらであっても、コードが重複したり、初期化を見逃したりすることはありません。

于 2012-11-09T03:12:17.717 に答える