2012-03-07 24 views
13

Sono nuovo nella programmazione Android e sto cercando di capovolgerlo solo per rendermi chiaro su come funzionano le cose.Cosa succede a un database Sqlite quando l'app viene rimossa

Quando si creano database Sqlite in un'app Android, dove è memorizzato il database? Viene cancellato quando l'app viene rimossa? Qualsiasi informazione su questo sarebbe molto utile per comprendere la programmazione Android per le persone provenienti da uno sfondo di sviluppo web.

+0

leggi questo http://developer.android.com/guide/topics/data/data-storage.html –

risposta

19

I database SQlite sono solo file e vengono trattati come qualsiasi altro file: vengono memorizzati (per impostazione predefinita) nell'area dati privati ​​dell'applicazione (/data/data/$PACKAGENAME/databases). Vengono cancellati insieme a tutto il resto nell'area dati privati ​​dell'applicazione.

È possibile creare un database sulla scheda SD, se lo si desidera. Ovviamente, non verranno rimossi durante la disinstallazione.

+4

In realtà, anche questi verranno rimossi, se hai usato 'getExternalFilesDir()' per la posizione. IOW, dipende da dove sulla memoria esterna si inserisce il database. – CommonsWare

+0

Grazie per la risposta, David. Quindi, giusto per farlo, sono archiviati come file piuttosto che in un singolo file come nel caso di MSSQL o MySql? – Zishan

+0

Non so cosa faccia MSSQL o MySQL, ma SQLite memorizza ogni database come un singolo file sotto il controllo dell'applicazione. Non esiste una memoria di database centrale. Vale la pena ottenere lo strumento da riga di comando sqlite3 e giocare con esso per avere un'idea di come funziona (ed è utile anche per il debug). –

0

Il database si trova in /data/data/app.package.name/databases. È possibile accedere a questa cartella solo sull'emulatore o su un dispositivo rooted (con un file explorer con un diritto utente Super, ad esempio).

Quando si elimina un app tutti i relativi dati vengono cancellati (basi di dati compreso)

0

Salvo diversa (da voi), le applicazioni mantengono i loro dati sotto /data/data/<appname>, e SQLite-database sono in /data/data/<appname>/databases. Quando si disinstalla un'app, l'intero albero delle directory di /data/data/<appname> verrà eliminato, inclusi i database.

+0

La directory non è '/ data/data/appname/databases' - è'/data/data/app.package.name/databases' –

0

Normalmente, il database dovrebbe essere conservato in

/data/data/package.name.of.your.app/databases 

Tuttavia non è una buona cosa da fare affidamento su questo. E 'molto meglio per trovarlo con getDatabasePath su ContextWrapper, come ad esempio:

File dbFile = getDatabasePath(db_name); 

E, sì, di solito l'intera directory /data/data/package.name.of.your.app sarebbe eliminato se si disinstalla l'applicazione.

0

I DB, le preferenze, i file cache, i file temporanei sono tutti memorizzati nella posizione /data/data/comp.package.name/ nella memoria del telefono.

Quando si disinstalla l'app, l'intera cartella della memoria del telefono per questa app verrà completamente rimossa.

Problemi correlati