使用另一个类的数据库助手

时间:2012-11-09 02:43:00

标签: java android database sqlite

我正在为Android应用程序编写数据库适配器类,并计划创建特定于表的适配器类。我将构建整个事物,就像Shawn在this post中列出的一样。有多个数据库帮助程序类对我来说似乎是多余的,所以我想知道是否可以引用一个数据库帮助程序类而不是创建多个数据库帮助程序类。这是我正在讨论的部分:

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

1 个答案:

答案 0 :(得分: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继承并为特定表创建特定方法。 在这种情况下,您不会重复代码,也不会错过初始化您最初调用的初始化。