【问题标题】:Using another class's database helper使用另一个类的数据库助手
【发布时间】:2012-11-09 11:12:17
【问题描述】:

我正在为一个安卓应用程序编写一个数据库适配器类,并计划创建特定于表的适配器类。我将像 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);
    }
}

【问题讨论】:

    标签: java android database sqlite


    【解决方案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 继承并为特定表创建特定方法。 在这种情况下,您不会重复代码,也不会错过任何您首先调用的助手的初始化。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-09-02
      • 1970-01-01
      • 1970-01-01
      • 2020-01-21
      • 2017-03-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多