2013-06-03 12 views
20

Ho sviluppato un'app per Android e rilasciato la versione 1.0. L'app contiene il database SQLite locale con 5 tabelle.Aggiornamento database SQLite Android e app

Ora abbiamo pianificato di rilasciare la versione 2.0 aggiornare anche gli utenti della versione 1.0. Nella versione 2.0 abbiamo incluso due tabelle in più con la precedente tabella 5, quindi 7 tabelle ora.

Ora la mia domanda è, gli utenti della versione 1.0 hanno tutti alcuni dati nel database locale, se aggiorna alla versione 2.0 i dati precedenti andranno persi? Se è così. allora qual è il metodo alternativo?

+0

se si modifica l'architettura DB, il vecchio DB non può rimanere – thepoosh

+0

@thepoosh Grazie per la risposta. Se non ho modificato l'architettura DB, ma ho aggiornato la versione con una nuova funzione. In quel caso? –

+2

prova a leggere questa risposta: http://stackoverflow.com/a/8627242/1056359 – thepoosh

risposta

22

Si dovrebbe mettere tutte le modifiche nel metodo ONUPGRADE è possibile utilizzare questo codice:

@Override 
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
    String sql = "ALTER TABLE " + TABLE_SECRET + " ADD COLUMN " + 
    "name_of_column_to_be_added" + " INTEGER"; 
    db.execSQL(sql);   
}   

questo aggiunge una colonna nel database corrente. Il tuo database non perderà dati. Promemoria: onUpgrade verrà chiamato quando viene eseguito getWriteableDatabase o getReadableDatabase E la versione del database è diversa dalla versione precedente.

+0

Giusto per chiarire, TABLE_SECRET è il nome della tabella. – Rexcirus

1

Si può fare un po 'su SQLiteOpenHelper#onUpgrade, recuperare alcuni vecchi dati. e si inserisce nella nuova tabella

2

Modifica la tua versione di db e aggiungi altri due metodi di creazione tabella nel tuo metodo onUpgrade(SQLiteDatabase db, int oldVersion, int newVesion). Ora i dati precedenti non andranno persi.

Spero che questo ti possa aiutare.