Backup / ripristino sqlite db in Android

Possibile duplicato:
Backup / ripristino Android: come eseguire il backup di un database interno?

Sto sviluppando un’applicazione in cui è disponibile SQL lite db. Devo dare all’utente la possibilità di eseguire il backup del database e ripristinarlo di nuovo. Come lo posso fare? Codice d’esempio?

E nel caso in cui il mio utente ha salvato il db, e poi ha aggiornato l’app a un nuovo codice di versione del DB, ripristinerà il lavoro? Come faccio a farlo?

Nella cartella “/data/data/’your.app.package’/databases/” hai un file .db che è il tuo database. Puoi copiare quel file, salvarlo e poi rimetterlo di nuovo lì.

Un esempio su come eseguire il backup del database sull’archivio esterno:

final String inFileName = "/data/data//databases/foo.db"; File dbFile = new File(inFileName); FileInputStream fis = new FileInputStream(dbFile); String outFileName = Environment.getExternalStorageDirectory()+"/database_copy.db"; // Open the empty db as the output stream OutputStream output = new FileOutputStream(outFileName); // Transfer bytes from the inputfile to the outputfile byte[] buffer = new byte[1024]; int length; while ((length = fis.read(buffer))>0){ output.write(buffer, 0, length); } // Close the streams output.flush(); output.close(); fis.close(); 

Puoi chiarire cosa intendi con “back up”? SQLite non ha un metodo di backup specifico; devi leggere le righe dal db e salvarle in qualche modo. Molti sviluppatori usano XML per fare questo.

Se l’utente salva il codice db e quindi si passa a un nuovo codice di versione DB, è necessario decidere come eseguire il ripristino. Ancora una volta, devi fare il lavoro per leggere il backup e rimetterlo nel database; né SQLite né Android lo fanno per te.

Il pacchetto android.app.backup contiene classi per lavorare con l’agente di backup Android, ma implementano un framework generale. Spetta a te implementare le specifiche per ogni file o database di cui stai eseguendo il backup.