web-dev-qa-db-fra.com

parcourir les données dans Android SQLite Database

Existe-t-il un moyen pour un utilisateur Android Android de parcourir les bases de données SQLite sur son téléphone et d'afficher les données dans les bases de données?

J'utilise beaucoup le programme bêta de SoftTrace. C'est génial mais je n'ai aucun moyen de trouver les données qu'il suit sur un PC.

39
Justin C

La base de données d'une application spécifique réside dans /data/data/[packagename]/databases

Le nom du pack est le package que vous définissez dans votre manifeste, par exemple /data/data/org.vimtips.supacount/databases/counts.db.

Vous pouvez le voir avec adb Shell et tapez sqlite3 /data/data/org.vimtips.supacount/databases/counts.db

Ou vous pouvez le retirer de l'appareil pour le regarder avec un utilitaire tiers, avec une commande comme adb pull /data/data/org.vimtips.supacount/databases/counts.db ..

Cela suppose que vous avez la permission d'afficher la base de données, ce que vous pourriez ne pas avoir si vous n'avez pas écrit l'application vous-même ... mais dans ce cas, s'agit-il en fait d'une question de programmation?

26
synic

Si vous utilisez Eclipse, vous pouvez utiliser un plug-in appelé 'Questoid SQLite Browser' pour parcourir la base de données SQL Lite sur votre Android émulateur Android:

  1. Installez le plugin
  2. Redémarrez Eclipse
  3. Démarrez votre émulateur
  4. Passer à DDMS
  5. Base de données ouverte avec plugin (comme @synic mentionné précédemment, la base de données se trouve ici, par exemple/data/data/my_project/databases)

Voici un tutoriel plus détaillé: http://www.tylerfrankenstein.com/browse-Android-emulator-sqlite-database-Eclipse

18

Voici la méthode free qui a fonctionné pour moi sur un téléphone qui is not rooted. Le crédit revient à this SO answer .

  1. Utilisation adb backup -f backup.ab -noapk app.package.name
  2. Sous Windows, téléchargez le Android Backup Extractor jar trouvé sur SourceForge ici , puis exécutez Java -jar abe.jar unpack backup.ab extractedbackup.tar. Sous Linux, vous pouvez suivre les instructions dd de la réponse à laquelle j'ai donné du crédit au début.
  3. Télécharger SQLite Database Browser de SourceForge ici , puis ouvrez le fichier db contenu dans extractedbackup.tar.

Personnellement, pour faciliter ce processus, j'ai d'abord ajouté adb à mon environnement PATH. Ensuite, j'ai créé un dossier de sauvegarde où je stocke tous les fichiers mentionnés ci-dessus. Cela m'empêche d'avoir à cd (changer de répertoire) partout.

7
theblang

Le plugin Questoid semble coûter 9 $ et doit être enregistré. Une autre alternative sous Windows consiste à télécharger le navigateur SQLLite du domaine public open-source (lien ci-dessous), puis à extraire la base de données du téléphone. Dans Eclipse, vous pouvez le faire à partir du navigateur de fichiers, en allant dans le répertoire/data/data/[nom du pack]/databases sur le téléphone ou l'émulateur, et en cliquant sur "Extraire un fichier de l'appareil" en haut à droite. Enregistrez la base de données localement, puis ouvrez-la avec le navigateur SQLite.

http://sourceforge.net/projects/sqlitedbrowser/

5
joseph_morris

En fait, le moyen le plus disponible (mais toujours hacky) d'obtenir des résultats "en direct" à partir d'une base de données tout en développant sur émulateur que j'ai trouvé est le suivant:

  1. Créez un script pour extraire la base de données de l'émulateur, quelque chose comme ça

    #!/bin/bash
    
    Android_HOME=/path/to/sdk
    ADB=$Android_HOME/platform-tools/adb
    REMOTE_DB_PATH=/data/data/com.yourpackage.name/databases/your_db
    LOCAL_DB_PATH=.
    
    while true; do
    
      echo copying DB...
      `$ADB pull $REMOTE_DB_PATH $LOCAL_DB_PATH`
      sleep 3
    
    done
    

    Exécuter.

  2. Installer plugin SQLite Manager pour Firefox

  3. Ouvrez votre copie locale de la base de données (qui est constamment remplacée par le script en cours d'exécution à l'étape 1)

  4. Entrez votre SQL:

    enter image description here

  5. Sélectionnez File->Reconnect

  6. Cliquez sur Run SQL

L'astuce clé est que la reconnexion ne réinitialise pas le code SQL entré à l'étape 4 (comme c'est le cas, par exemple, dans SQLite Browser ), vous pouvez donc répéter les étapes 5, 6 pour voir les résultats "en direct" de votre base de données Android.

Notez que cela ne fonctionne que pour l'émulateur, il ne fonctionnera pas pour un appareil réel (même un enraciné).

4
Denis Kniazhev

Si vous avez eu la chance d'obtenir IntelliJ Ultimate, vous pouvez brancher l'appareil, ouvrez l'onglet "Base de données" à droite, cliquez sur +, sélectionnez SQLite. Le reste est insignifiant.

Une chose à garder à l'esprit est que vous devez continuer à cliquer sur le bouton "Synchroniser" sur la base de données (ou sur la table sélectionnée) pour voir les modifications apportées en externe, ce qui est très ennuyeux.

3
Denis Kniazhev

Vous pouvez afficher votre base de données depuis votre application à l'aide de cette bibliothèque. https://github.com/sanathp/DatabaseManager_For_Android

Avec cette bibliothèque, vous pouvez gérer la base de données de votre application SQLite à partir de votre application elle-même. vous pouvez afficher les tables dans votre base de données d'application, mettre à jour, supprimer, insérer des lignes dans vos tables

C'est un seul fichier d'activité Java, ajoutez simplement le fichier Java à votre dossier source.Lorsque le développement est terminé, supprimez le fichier Java de votre dossier src c'est .

Cela m'a beaucoup aidé. J'espère que cela vous aide aussi.

Vous pouvez voir la démo d'une minute ici: http://youtu.be/P5vpaGoBlBY

3
sanath_p

Voir cette réponse. Vous pouvez utiliser la bibliothèque Stetho de Facebook, puis simplement parcourir votre base de données depuis Chrome :)

1
Yair Kukielka