Vorbelegte Android-Datenbank [duplicate]

Lesezeit: 3 Minuten

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.

  • 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

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

Vorbelegte Android Datenbank duplicate
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 🙂

923090cookie-checkVorbelegte Android-Datenbank [duplicate]

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy