@TheReader richtig ist. Ich bevorzuge einen einzigen SQLiteOpenHelper für alle Tabellen, hier ist was ich tue: Übergeben Sie eine Liste von "Tabellenerstellung" sqls an den Konstruktor der SQLiteOpenHelper-Unterklasse, dann in der OnCreate-Funktion die Liste durchlaufen, um jede Tabelle zu erstellen. so meine SQLiteOpenHelper Unterklasse etw wie folgt aussieht:
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;
}
@Override
public void onCreate(SQLiteDatabase sqLiteDatabase) {
for(String oneCreation : TABLE_CREATION_SQLS){
sqLiteDatabase.execSQL(oneCreation);
}
}
Aber das kommt ein weiteres Problem: Nach einer neuen Tabelle hinzufügen und mit einem bestehenden alten installierte die neue Version der App installieren, die neue Tabelle wird nicht erstellt werden, weil das Vorhandensein der alten Datenbank verhindert, dass die onCreate-Funktion aufgerufen wird. Daher muss der Nutzer zuerst die App deinstallieren und die App vollständig installieren. Die Database_Version hilft, es android scheint nicht die onCreate Funktion ausführen , wenn und nur wenn die eine existin Datenbank mit dem gleichen Namen und der gleichen Database_Version
ok, danke, kennen Sie den Nebeneffekt des für jedes mit Tabelle? Oder soll nur eine einzige Datei bearbeitet werden? –
Überprüfen Sie die bearbeitete Antwort –
Danke das ist ziemlich erklärend, ich werde so bald wie möglich lesen! : D: D –