Frage

Ich habe im Grunde beendet ein Android-App zu entwickeln, dass Marken SQLite-Datenbanken nutzen, dass ich zu dem Benutzerdatenbereich auf dem Gerät kopieren zB /data/data/com.company.app/databases/users.db

Ich bin nicht sicher, wie der Markt App Update-Vorgang stattfindet, und bin auch nicht sicher, wie ich es testen konnte.

Ich prüfe derzeit, ob die Datenbank auf dem Gerät vorhanden ist, und kopieren Sie es, wenn es nicht den Fall ist (in der Regel tritt nur auf ersten Start). Was passiert, wenn ich eine neue Version der Datenbank in meiner aktualisiert app? Wird ein Markt-Update Benutzerdaten wischt, so dass es meine neue Datenbank in am nächsten Start kopiert?

Was in der Zukunft passiert, wenn ich Datenbank Änderungen / add Aufzeichnungen machen / etc und verpacken diese mit der neuen App? Wird diese Datenbank nicht die alte Datenbank überschrieben werden?

Ansonsten zu vermeiden Kopieren und Überschreiben der Datenbanken aus dem App-Bundle auf jedem Start ist es eine Möglichkeit, die Größe und das Datum der Datenbankdateien zu überprüfen und kopiert nur, wenn die Datenbank in dem Bündel neuer ist?

Wenn jemand Klärung bedarf bitte fragen.

War es hilfreich?

Lösung

Ich tue etwas Ähnliches. Was ich tat, ist die Datenbankversion gesetzt, und dann, wenn ich überprüfen, ob die Datenbank vorhanden ist, ich auch dafür sorgen, ist es die richtige Version. Wenn es nicht ist, ich speichern Benutzer-Favoriten aus der Datenbank löschen und meine db recopy und dann Benutzer-Favoriten setzen.

Das ist mein auf Upgrade

    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    if (oldVersion == 2) {

        System.out.println("Performing upgrade!");
        openDataBase();
        // save the old favorites
        Cursor mCursor = getFavorites();
        ArrayList<Stop> favs = allCursorToStops(mCursor);
        mCursor.close();

        deleteRecreate(db);

        openDataBase();

        for (int i = 0; i < favs.size(); i++)
            setFavorite(favs.get(i));

        close();

    } else {

        deleteRecreate(db);

    }
}

Hier ist, wo ich Existenz überprüfen / bei Bedarf etc aktualisieren

    boolean dbExist = checkDataBase();

    if(dbExist){
        // check if we need to upgrade
        openDataBase();
        int cVersion = myDataBase.getVersion();
        close();
        if(cVersion != VERSION)
            onUpgrade(myDataBase, myDataBase.getVersion(), VERSION);
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top