2012-11-24 21 views
7

Ho un'app che ha uno sqlite con 3 tabelle. La mia preoccupazione è che, se introduco un aggiornamento che aggiunge un'altra tabella (quindi sono 4 tabelle), la versione aggiornata cancellerà il database.Mantenere i dati SQLite dopo l'aggiornamento

Come è possibile eseguire il backup/ripristino di db dato che il backup avviene prima dell'aggiornamento e il ripristino dopo l'aggiornamento? Se lo faccio usando l'IO (copia su scheda SD e copia indietro) allora fallirà.

Sto pensando di esportare i dati in xml e di caricarli manualmente. C'è un altro modo? qualche esempio su come farlo?

risposta

4

Se si desidera semplicemente aggiungere una nuova tabella, commentare i comandi DROP TABLE nel metodo onUpgrade(). Hai il pieno controllo del codice in onUpgrade() in modo che possa essere solo:

@Override 
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
    db.execSQL("CREATE TABLE ..."); 
} 

Tecnicamente non è nemmeno bisogno di incrementare la versione del database, ogni volta che si ha accesso a una copia di db è possibile eseguire il vostro CREATE .

+0

oh dannazione! come ho fatto a non pensarci! Grazie. Ma la mia domanda è ancora valida, come faccio a fare il backup. diciamo che l'utente esegue il backup del db, disinstalla l'app, scarica la nuova app aggiornata e poi decide di voler caricare il file di backup. Come posso ottenerlo? Non penso che una copia di IO semplice funzionerebbe – Snake

+1

Un database SQLite è solo un file normale, quindi puoi semplicemente copiarlo sulla scheda SD o anche nella stessa cartella del database esistente. [Ecco un esempio] (http://stackoverflow.com/q/2170031/1267661). – Sam

+0

Penso che tu abbia perso il mio punto. Diciamo che ho la versione 1 di db che ha 3 tabelle. L'ho copiato su una scheda SD. L'utente è passato alla versione 2 di db che ha 4 tabelle. Ora se copi di nuovo il file db da SD, hai forzato la versione 1 anche se il codice lo tratterà come versione 2. Vedi il problema, voglio un modo per esportare e importare i dati nelle stesse tabelle, non importa se ci sono tabelle aggiuntive o no – Snake

Problemi correlati