是否应该为数据库中的每个表都有一个SQLiteOpenHelper?

Mat*_*yr' 20 database android android-sqlite

有一个大的SQLiteOpenHelper子类为数据库中的每个表定义onCreateonUpgrade方法,或者最好有多SQLiteOpenHelper个子类,每个表一个?

有最好的做法吗?或者都是可以接受的,但有不同的好的和坏的副作用?

Mys*_*icϡ 25

您应该为所有表都有一个SQLiteOpenHelper类.检查链接.

  • 谢谢!我在这里阅读了一篇文章http://www.vogella.com/articles/AndroidSQLite/article.html#sqliteoverview_sqliteopenhelper,它建议采用每个表的方法,在我看来,绝对没有意义,你的链接确认了这一点. (4认同)

Cha*_*mor 5

只是为了一个不同的方法:

你总是可以对onOpen(..)方法进行过度调整,称之为你的方法onCreate(..).一定要使用"CREATE TABLE IF NOT EXISTS..."语句而不是"CREATE TABLE"

    @Override
public void onOpen(SQLiteDatabase db) {
    onCreate(db);
}

@Override
public void onCreate(SQLiteDatabase db) {
    String CREATE_FRIENDS_TABLE = "CREATE TABLE IF NOT EXISTS ...";
    db.execSQL(CREATE_FRIENDS_TABLE);
}
Run Code Online (Sandbox Code Playgroud)

您可以使用从SQLiteOpenHelper扩展的每个类来执行此操作