Ich arbeite an einer Android-Anwendung, die mehrere Einträge (eine einzelne Tabelle mit 1000-10000 Zeilen) in der Datenbank dieser App enthalten muss, bevor der Benutzer diese App verwenden kann. Ich habe mich in einigen Tutorials umgesehen und bin mir nicht sicher, wie ich das am besten mache. Sollte ich einfach bei jedem Start der App prüfen, ob die Datenbank existiert, und wenn sie nicht vorhanden ist, sie erstellen und die Tausenden von Datensätzen einfügen, die ich brauche? Oder gibt es einen besseren Weg, dieses Problem zu lösen? Idealerweise könnte es als Teil des Installationsprozesses der App enthalten sein, aber ich bin mir nicht sicher, ob dies möglich ist. Jedes Feedback wäre sehr willkommen.
Vorbelegte Android-Datenbank [duplicate]
Hier ist ein Beispiel dafür, wie Sie eine Datenbank erstellen und füllen. Sie können dies einfach bei der App-Installation tun, dies erstellt jedoch nur einen Eintrag, was für das, was Sie tun möchten, möglicherweise ineffizient ist.
private static class settingsDatabaseHelper extends SQLiteOpenHelper{
//SQL String for creating the table required
private static final String CREATE_SETTINGS_TABLE
= "CREATE TABLE tbl_settings(" +
"_ID INTEGER PRIMARY KEY AUTOINCREMENT," +
"VOIPUSERNAME TEXT," +
"VOIPAUTHID TEXT," +
"PASSWORD TEXT," +
"VOIPDISPLAYNAME TEXT," +
"SIPPROXYSERVER TEXT," +
"SIPREGISTRAR TEXT," +
"SIPREALM TEXT," +
"EXPIRESTIME INTEGER);";
//constructor
public settingsDatabaseHelper(Context context, String name,
CursorFactory factory, int version) {
super(context, name, factory, version);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(CREATE_SETTINGS_TABLE);
ContentValues initialValues = new ContentValues();
initialValues.put("VOIPUSERNAME", "xxxxx");
initialValues.put("VOIPAUTHID", "xxxxxxxxxx");
initialValues.put("PASSWORD", "xxxxxx");
initialValues.put("VOIPDISPLAYNAME", "xxxxxxxxx");
initialValues.put("SIPPROXYSERVER", "xxxxxxxxxxxxx");
initialValues.put("SIPREGISTRAR", "xxxxxxxxxxx");
initialValues.put("SIPREALM", "xxxxxxxxxx");
initialValues.put("EXPIRESTIME", xxxxxxxxxxx);
Log.d("1.6", "gets to here");
db.insert(SETTINGS_TABLE, null, initialValues);
}
@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 " + SETTINGS_TABLE);
onCreate(db);
}
}
//end helper class
}
-
Eine Erklärung für die Ablehnung bitte?
– Donal Rafferty
4. Januar 2012 um 13:20 Uhr
-
Wie kann ich dies bei der App-Installation tun? Wird dieser Teil des Codes nur bei der Installation ausgeführt?
– ghchoi
1. Oktober 2017 um 12:15 Uhr
Moritz
Der Weg, den ich hier gehe, besteht darin, eine vorbelegte Datenbank im Assets-Ordner zu versenden. Sie können dort Dateien einfügen und sie so verwenden, wie sie sind. Beachten Sie jedoch, dass es eine Größenbeschränkung von 1 MB gibt, sodass Sie Dateien möglicherweise aufteilen oder komprimieren müssen.
Die Komprimierung ist ziemlich praktisch und wird vom Betriebssystem selbst gut unterstützt.
hoffe das war etwas hilfreich 🙂
-
Die Größenbeschränkung beträgt 1 MB.
– Phantômaxx
30. Juni 2014 um 15:24 Uhr
JavaDoc von SQLiteOpenHelper:
Eine Hilfsklasse zum Verwalten der Datenbankerstellung und Versionsverwaltung. Sie erstellen eine Unterklasse, die onCreate(SQLiteDatabase), onUpgrade(SQLiteDatabase, int, int) und optional onOpen(SQLiteDatabase) implementiert, und diese Klasse kümmert sich um das Öffnen der Datenbank, falls vorhanden, erstellt sie, falls nicht vorhanden, und aktualisiert sie bei Bedarf . Transaktionen werden verwendet, um sicherzustellen, dass sich die Datenbank immer in einem vernünftigen Zustand befindet.
Ein Beispiel finden Sie in der NotePadProvider-Klasse in der NotePad-Beispielanwendung im Verzeichnis samples/ des SDK.
Wenn Sie also diese Klasse erweitern, haben Sie 3 Methoden, die in einigen Fällen aufgerufen werden, und Sie können auswählen, was zu tun ist. Das ist die beste Vorgehensweise 🙂
stackoverflow.com/a/9109728/265167
– Yaqub Ahmad
15. Februar 2012 um 11:00 Uhr
Ich möchte dies nicht als Antwort posten, weil es nicht wirklich so ist. Erwägen Sie, Java zu schreiben, um die Datenbank zu erstellen auf dem Android (z. B. aus CSV-Dateien, die mit ADB gepusht wurden). Dann zippen Sie es zu
/assets
zum Installieren. Der Versuch, genau das zu erreichen, was Android in einer Nicht-Android-Umgebung erwartet, stellte sich für mich als ein fragiler Build-Schritt heraus.– Gen
6. Juni 2012 um 22:11 Uhr
@JonDiY212 Schlechter HTML-Code in Ihrem Link.
– Noumenon
14. Mai 2013 um 16:56 Uhr