web-dev-qa-db-fra.com

Android: où sont stockés les fichiers de base de données?

J'ai créé une base de données SQLite sur Android. Le programme peut lire/écrire dans la base de données de sorte que le fichier de base de données a évidemment été créé. Le SQLiteDatabase.mPath est défini sur

db.mPath = "/data/data/dev.client.Android/databases/clientDB.db"

mais lorsque je parcours les répertoires de l'appareil, je ne trouve pas le fichier clientDB.db. J'ai regardé à l'intérieur du répertoire de données mais il semble être vide.

Quelqu'un sait-il ce qui pourrait mal se passer ici?

44
Niko Gamulin

Si vous voulez dire que vous avez visité /data et n'y a rien trouvé, et vous examinez un morceau ordinaire de Android matériel, ce qui est attendu. DDMS n'a pas la permission de parcourir /data.

Cependant, au moins si votre application est compilée en mode débogage, vous pouvez utiliser le adb pull commande sur la console pour télécharger directement votre fichier.

28
CommonsWare

essayez getDatabasePath sur ContextWrapper ( http://developer.Android.com/reference/Android/content/ContextWrapper.html ). Si vous êtes dans une classe d'activité ou d'application, essayez:

File dbFile = getDatabasePath(MY_DB_NAME);
Log.i(dbFile.getAbsolutePath());

En supposant que c'est dans /data/data/my.package.name/databases/ est mauvais car il n'y a aucune garantie que les données n'ont pas été déplacées vers la carte SD ou que l'appareil/OS vient de choisir un répertoire de données différent.

33
browep

En mode débogage, vous pouvez utiliser adb Shell et parcourir le contenu du répertoire. Dans le shell, vous pouvez appeler sqlite3 /data/data/dev.client.Android/databases/clientDB.db pour analyser la base de données.

6
kuester2000