Domanda

Ho praticamente finito di sviluppare un app Android che fa uso di database SQLite che copio per l'area dei dati utente sul dispositivo ad esempio /data/data/com.company.app/databases/users.db

Non sono sicuro di come la procedura di aggiornamento marketplace di app avviene e sono anche sicuri di come ho potuto testarlo.

Attualmente verificare se il database esiste sul dispositivo e copiarlo se lo fa non è (in genere si verifica solo al primo avvio mai). Cosa succede se ho una nuova versione della banca dati nella mia app aggiornato? Sarà un aggiornamento mercato cancellare i dati degli utenti in modo che possa copiare il mio nuovo database in sul prossimo lancio?

Che cosa succede in futuro, se faccio record di modifiche al database / add / etc e il pacchetto questo con la nuova app? Sarà questo database non sovrascrivere il vecchio database?

In caso contrario, per evitare di copiare e ignorando i database dal bundle app su ogni lancio c'è un modo per controllare la dimensione e la data dei file di database e solo copiare se il database nel bundle è più recente?

Se qualcuno ha bisogno di chiarimenti si prega di chiedere.

È stato utile?

Soluzione

che sto facendo qualcosa di simile. Quello che ho fatto è impostata la versione del database, e quindi quando posso controllare se il database esiste, ho anche per assicurarsi che sia la versione corretta. Se non è, risparmio preferiti utente dal database, asciugo e ricopio il mio db, e quindi rimessi preferiti dall'utente.

Questa è la mia su di aggiornamento

    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);

    }
}

Qui è dove ho verificare l'esistenza / se necessario aggiornare etc

    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);
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top