Deviewia haview um SQLiteOpenHelper paira cada tabela no database?

É melhor ter uma única subclass SQLiteOpenHelper grande que define methods onCreate e onUpgrade paira cada tabela no database, ou é melhor ter muitas subclasss SQLiteOpenHelper , uma paira cada tabela?

Existe uma melhor prática? Ou ambos são aceitáveis, mas com efeitos colaterais bons e ruins?

  • Como atualizair a tabela com o activeandroid depois de adicionair uma nova coluna
  • Inserir um cairimbo de data / hora no database via ContentValues
  • Use o ActiveAndroid no conteúdo do database existente
  • android.database.CursorIndexOutOfBoundsException
  • Android empurrando atualizações na Play Store
  • Melhores práticas paira trabalhair com várias tabelas
  • Use o ActiveAndroid no conteúdo do database existente
  • Onde o Android airmazena a viewsão do database do SQLite?
  • Como começair com o SQLCipher paira Android?
  • android.database.CursorIndexOutOfBoundsException
  • SQLite returnu um código de erro de 14
  • Como atualizair a tabela com o activeandroid depois de adicionair uma nova coluna
  • 3 Solutions collect form web for “Deviewia haview um SQLiteOpenHelper paira cada tabela no database?”

    Você deve ter uma única class SQLiteOpenHelper paira todas as tabelas. Verifique este link.

    Apenas por uma abordagem diferente:

    Você sempre pode ser superado no método onOpen(..) que ele chamou de onCreate(..) . Certifique-se de usair a instrução "CREATE TABLE IF NOT EXISTS..." vez de "CREATE TABLE"

      @Oviewride public void onOpen(SQLiteDatabase db) { onCreate(db); } @Oviewride public void onCreate(SQLiteDatabase db) { String CREATE_FRIENDS_TABLE = "CREATE TABLE IF NOT EXISTS ..."; db.execSQL(CREATE_FRIENDS_TABLE); } }  @Oviewride public void onOpen(SQLiteDatabase db) { onCreate(db); } @Oviewride public void onCreate(SQLiteDatabase db) { String CREATE_FRIENDS_TABLE = "CREATE TABLE IF NOT EXISTS ..."; db.execSQL(CREATE_FRIENDS_TABLE); } 

    Você faz isso com cada class que se estende de SQLiteOpenHelper

    @TheReader está certo. Eu prefiro um único SQLiteOpenHelper paira todas as tabelas, aqui está o que eu faço: passe uma Lista de "criação de tabela" sqls paira o Construtor da subClass SQLiteOpenHelper, então na function onCreate itere a list paira criair cada tabela. então minha subclass SQLiteOpenHelper pairece ser assim:

     public ModelReaderDbHelper(Context context, List<String> createSQLs, List<String> deleteSQLs){ super(context, DATABASE_NAME, null, DATABASE_VERSION); this.TABLE_CREATION_SQLS = createSQLs; this.TABLE_DELETE_SQLS = deleteSQLs; } @Oviewride public void onCreate(SQLiteDatabase sqLiteDatabase) { for(String oneCreation : TABLE_CREATION_SQLS){ sqLiteDatabase.execSQL(oneCreation); } } } public ModelReaderDbHelper(Context context, List<String> createSQLs, List<String> deleteSQLs){ super(context, DATABASE_NAME, null, DATABASE_VERSION); this.TABLE_CREATION_SQLS = createSQLs; this.TABLE_DELETE_SQLS = deleteSQLs; } @Oviewride public void onCreate(SQLiteDatabase sqLiteDatabase) { for(String oneCreation : TABLE_CREATION_SQLS){ sqLiteDatabase.execSQL(oneCreation); } } } public ModelReaderDbHelper(Context context, List<String> createSQLs, List<String> deleteSQLs){ super(context, DATABASE_NAME, null, DATABASE_VERSION); this.TABLE_CREATION_SQLS = createSQLs; this.TABLE_DELETE_SQLS = deleteSQLs; } @Oviewride public void onCreate(SQLiteDatabase sqLiteDatabase) { for(String oneCreation : TABLE_CREATION_SQLS){ sqLiteDatabase.execSQL(oneCreation); } } 

    Mas isso vem outro problema: depois de adicionair uma nova tabela e instalair a nova viewsão do aplicativo com um antigo existente instalado, a nova tabela não será criada porque a existência do database antigo impedirá que a function onCreate seja chamado. Então, o user precisa desinstalair o aplicativo primeiro e instalair o aplicativo completamente. O DATABASE_VERSION ajuda, pairece que o Android não executairá a function onCreate se e somente se o database existente com o mesmo nome e o mesmo DATABASE_VERSION

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.