web-dev-qa-db-fra.com

Afficher le contenu du fichier de base de données dans Android Studio

J'utilise Android Studio pour développer mon application depuis sa sortie.

Tout fonctionne bien jusqu'à récemment, je dois déboguer avec la vérification du fichier de base de données. Comme je ne sais pas comment voir directement la base de données, lorsque je débogue pour générer le fichier de base de données, je dois exporter le fichier de base de données de mon téléphone vers le PC.

Pour ce faire, je dois ouvrir DDMS > File Explorer. Une fois le DDMS ouvert, je dois reconnecter la clé USB et je perds mon fil de débogage. Après avoir vérifié le fichier de base de données, je dois fermer le DDMS et reconnecter l’USB pour revenir au mode débogage.

C'est trop compliqué. Quelqu'un a-t-il un meilleur moyen de faire cela dans Android Studio (je sais que c'est plus facile dans Eclipse)?

221
Scott Zhu

Enfin, j’ai trouvé une solution simple qui n’a pas besoin d’ouvrir le DDMS.

En fait, la solution est basée sur ce que @Distwo a mentionné, mais cela n’a pas à être aussi compliqué.

First, rappelez-vous le chemin de votre fichier de base de données sur le périphérique, il devrait toujours rester le même. Par exemple le mien est: /data/data/com.XXX.module/databases/com.XXX.module.database

Second, exécutez cette commande qui tire votre fichier de base de données sur votre PC

 adb pull /data/data/com.XXX.module/databases/com.XXX.module.database /Users/somePathOnYourPC/

Ce que vous devez faire est simplement copier et stocker cette commande, vous pourrez ensuite l’utiliser encore et encore.

Troisième, si vous obtenez une autorisation refusée ou quelque chose du genre, exécutez simplement adb root avant la commande précédente.

21
Scott Zhu

Affichage des bases de données depuis Android Studio:

Modifier: Pour afficher votre base de données sur un émulateur, procédez comme suit (pour le périphérique réel, défilez vers le bas):

  1. Téléchargez et installez SQLiteBrowser .
  2. Copiez la base de données de l’appareil sur votre PC:

    • Versions d'Android Studio <3.0 :

      • Ouvrir DDMS via Tools > Android > Android Device Monitor

      • Cliquez sur votre appareil à gauche.
        Vous devriez voir votre candidature: enter image description here

      • Allez dans Explorateur de fichiers (l'un des onglets à droite), allez à /data/data/databases enter image description here

      • Sélectionnez la base de données en cliquant simplement dessus.

      • Accédez au coin supérieur droit de la fenêtre Android Device Monitor. Cliquez sur le bouton ' pour extraire un fichier de l'appareil ': enter image description here

      • Une fenêtre s'ouvrira vous demandant où vous souhaitez enregistrer votre fichier de base de données. Enregistrez-le n'importe où sur votre PC.

    • versions d'Android Studio> = 3.0 :

      • Ouvrir Explorateur de fichiers de périphériques via View > Tool Windows > Device File Explorer

      • Allez à data > data > PACKAGE_NAME > database, où PACKAGE_NAME est le nom de votre package (il s'agit de com.Movie dans l'exemple ci-dessus).

      • Faites un clic droit sur la base de données et sélectionnez Save As.... Enregistrez-le n'importe où sur votre PC.

  3. Maintenant, ouvrez le SQLiteBrowser que vous avez installé. Cliquez sur ' ouvrir la base de données ', accédez à l'emplacement où vous avez enregistré le fichier de base de données et ouvrez . Vous pouvez maintenant voir le contenu de votre base de données.


Pour afficher votre base de données sur votre appareil mobile:

Allez dans le répertoire this Github et suivez les instructions du fichier Lisez-moi pour pouvoir afficher votre base de données sur votre appareil. Qu'est-ce que vous obtenez est quelque chose comme ça:

enter image description here

C'est ça. Il va sans dire cependant que vous devez annuler toutes ces étapes avant de publier votre application.

278
ojonugwa ochalifu

Se connecter à Sqlite3 via ADB Shell

Je n'ai trouvé aucun moyen de le faire dans Android Studio, mais j'accède à la base de données avec un shell distant au lieu d'extraire le fichier à chaque fois.

Trouvez toutes les informations ici: http://developer.Android.com/tools/help/adb.html#sqlite

1- Allez dans votre dossier platform-tools dans une invite de commande

2- Entrez la commande adb devices pour obtenir la liste de vos appareils

C:\Android\adt-bundle-windows-x86_64\sdk\platform-tools>adb devices
List of devices attached
emulator-xxxx   device

3- Connectez un shell à votre appareil:

C:\Android\adt-bundle-windows-x86_64\sdk\platform-tools>adb -s emulator-xxxx Shell

4- Naviguez jusqu'au dossier contenant votre fichier db:

cd data/data/<your-package-name>/databases/

5- lancez sqlite3 pour vous connecter à votre base de données:

sqlite3 <your-db-name>.db

6- Lancez les commandes sqlite3 que vous aimez, par exemple:

Select * from table1 where ...;

Remarque: Recherchez d'autres commandes à exécuter ci-dessous.

Feuille de triche SQLite

Il y a quelques étapes pour voir les tables dans une base de données SQLite:

  1. Listez les tables dans votre base de données:

    .tables
    
  2. Énumérez à quoi ressemble le tableau:

    .schema tablename
    
  3. Imprimez la table entière:

    SELECT * FROM tablename;
    
  4. Répertoriez toutes les commandes d'invite SQLite disponibles:

    .help
    
192
Distwo

En fait, je suis très surpris que personne n'ait proposé cette solution:

Jetez un oeil à Stetho

J'ai utilisé Stetho à plusieurs reprises à différentes fins (l'une d'entre elles étant l'inspection de base de données). Sur le site actuel site Web , ils parlent également de fonctionnalités d’inspection du réseau et de la hiérarchie des vues.

Cela nécessite seulement un peu d’installation: 1 addition de dépendances (que vous pouvez commenter pour les versions de production), quelques lignes de code pour instancier Stetho et un navigateur Chrome (car il utilise Chrome devtools pour tout).

Mise à jour : Vous pouvez maintenant utiliser Stetho pour afficher les fichiers de royaume (si vous utilisez Realm au lieu d’une base de données SQLite): https://github.com/uPhyca/stetho-realm

Mise à jour # 2 : Vous pouvez maintenant utiliser Stetho pour afficher les documents Couchbase: https://github.com/RobotPajamas/Stetho-Couchbase

Mise à jour n ° 3 : Facebook concentre ses efforts sur l'ajout de toutes les fonctionnalités de Stetho dans son nouvel outil, Flipper. Flipper possède déjà de nombreuses fonctionnalités de Stetho. Alors, le moment est peut-être bien choisi pour faire le changement. https://fbflipper.com/docs/stetho.html

69
w3bshark

Méthode la plus simple lorsque vous n'utilisez pas d'émulateur

$ adb Shell
$ run-as your.package.name
$ chmod 777 databases
$ chmod 777 databases/database_name
$ exit
$ cp /data/data/your.package.name/databases/database_name /sdcard
$ run-as your.package.name # Optional
$ chmod 660 databases/database_name # Optional
$ chmod 660 databases # Optional
$ exit # Optional
$ exit
$ adb pull /sdcard/database_name

Mises en garde:

Je n'ai pas testé cela depuis un moment. Cela peut ne pas fonctionner sur les API> = 25. Si la commande cp ne fonctionne pas pour vous, essayez l'une des opérations suivantes:

# Pick a writeable directory <dir> other than /sdcard
$ cp /data/data/your.package.name/databases/database_name <dir>

# Exit and pull from the terminal on your PC
$ exit
$ adb pull /data/data/your.package.name/databases/database_name

Explication:

Le premier bloc configure les autorisations de votre base de données pour qu'elles soient lisibles. Ceci utilise run-as qui vous permet d'emprunter l'identité de l'utilisateur de votre paquet pour effectuer le changement.

$ adb Shell
$ run-as your.package.name
$ chmod 777 databases
$ chmod 777 databases/database_name
$ exit # Closes the Shell started with run-as

Ensuite, nous copions la base de données dans un répertoire mondial lisible/accessible en écriture. Cela permet l’accès des utilisateurs adb pull.

$ cp /data/data/your.package.name/databases/database_name /sdcard

Ensuite, remplacez les privilèges de lecture/écriture existants. Ceci est important pour la sécurité de votre application. Toutefois, les privilèges seront remplacés lors de la prochaine installation.

$ run-as your.package.name
$ chmod 660 databases/database_name 
$ chmod 660 databases
$ exit # Exit the Shell started with run-as

Enfin, copiez la base de données sur le disque local.

$ exit # Exits Shell on the mobile device (from adb Shell) 
$ adb pull /sdcard/database_name
69
diedthreetimes

Dans Android Studio 3 et les versions ultérieures, vous pouvez voir un "Explorateur de fichiers de périphériques" Section dans le côté inférieur droit de Android Studio.

Ouvrez-le, vous pouvez voir l’arborescence de fichiers, vous pouvez trouver une base de données d’application dans ce chemin:

/data/data/{package_name}/databases/

enter image description here

44
Ali Zeynali

Essayez ceci Android plugin studio SQLScout . vous pouvez voir et éditer votre base de données d'applications en temps réel.

SQLScout

Edit: Rappelez-vous que c'est un plugin payant, mais vous avez un essai de 24h et convient au temps passé de mal de tête.

15

Après avoir examiné toutes les solutions, je vous proposerai

Utilisez Stethos
Voyons à quel point c'est simple

Ajouter les dépendances suivantes dans le fichier build.gradle

compile 'com.facebook.stetho:stetho:1.5.0'
compile 'com.facebook.stetho:stetho-js-rhino:1.4.2'

Ensuite, allez à votre méthode mainActivity onCreate ajouter la ligne suivante

Stetho.initializeWithDefaults(this);

cela vous obligerait à

import com.facebook.stetho.Stetho;

maintenant tout en exécutant l'application à partir de Android studio, ouvrez Chrome et dans le type de barre d'adresse
chrome: // inspect /

dans l'onglet ressources> web SQL, vérifiez facilement la base de données et la table en temps réel

9
ShankPossible

Pour savoir où est stockée la base de données sqlite créée par vous dans Android studio, procédez comme suit:

1.Run your application
2.Go to Tools--->Android---->Device Monitor
3.Find your application name in left panel
4.Then click on File Explorer tab
5.Select data folder
6.Select data folder again and find your app or module name
7.Click on your  database name
8.On right-top window you have an option to pull file from device.
9.Click it and save it on your PC
10.Use FireFox Sqlite manager to attach it to your project.

Pour plus d'informations, ce lien vous sera utile. http://www.c-sharpcorner.com/UploadFile/e14021/know-where-database-is-stored-in-Android-studio/

Pour afficher vos données présentes dans un fichier db, vous devez télécharger sqlite browser ou ajouter un plugin identique dans n’importe quel navigateur. Vous devez donc ouvrir le fichier dans le navigateur et visualiser vos données.

Navigateur de téléchargement depuis http://sqlitebrowser.org/

Voici une capture d'écran montrant le navigateur contenant la base de données de registre

Merci,

5
MD05

La méthode la plus simple consiste à connecter votre appareil et à exécuter Android Studio Then à partir de la barre d’outils:

  1. Affichage -> Fenêtre Outils -> Explorateur de fichiers de périphériques
  2. Allez dans data/data et trouvez votre paquet
  3. trouvez le fichier de base de données que vous voulez explorer et téléchargez-le
  4. Je recommande sur cet outil en ligne: https://sqliteonline.com/ pour explorer le fichier db

Une autre façon utilise la bibliothèque Stetho:

  1. Ajoutez une dépendance Stello à votre build.gradle:

    compiler 'com.facebook.stetho: stetho: 1.5.0'

  2. Mettez la ligne suivante sur votre onCreate () de votre classe d’application ou de votre activité principale:

    Stetho.initializeWithDefaults (this);

  3. Connectez votre appareil, lancez l'application et accédez au site suivant sur Chrome:

    chrome: // inspect/# devices

et c'est tout. vous pouvez maintenant explorer vos tables.

Remarque: il est recommandé de supprimer la dépendance avant de passer en production.

4
Gal Rom

Ouvrez le terminal d’exploration de fichier de périphérique situé en bas du Android Studio.

Ouvrez le dossier nommé Les données , puis à nouveau dans Data, ouvrez le dossier Les données .

Open the folder data

Faites défiler la liste des dossiers vers le bas et recherchez-le avec votre.package.name. Ouvrez le dossier votre.package. name > Base de données . Vous obtenez votre.databaseName . Clic droit your.databaseName et enregistrer sous C:/votre/ordinateur/répertoire.

Allez dans C:/votre/ordinateur/répertoire ouvrez votre.databaseName avec DB SQLite

enter image description here

2
eLi

Pour Android Studio 3.X

  1. Affichage -> Fenêtres d'outils -> Explorateur de fichiers de périphériques
  2. Dans l'explorateur de fichiers data-> data-> com. (Votre package d'application) -> bases de données
  3. Faites un clic droit sur la base de données et enregistrez sur votre ordinateur local. Pour ouvrir le fichier, vous pouvez utiliser SQLite Studio en faisant simplement glisser le fichier de base de données dessus.

Voici le lien vers SQLite Studio: https://sqlitestudio.pl/index.rvt?act=download

2
Jawad Zeb

Si vous souhaitez parcourir vos bases de données À PARTIR DE DANS Android STUDIO, voici ce que j'utilise:

Allez dans Fichiers/Paramètres/Plugins et cherchez ceci:

enter image description here

... Après avoir redémarré Android Studio, vous pouvez choisir votre fichier de base de données téléchargé comme suit: enter image description here

... Cliquez sur l'icône "Open SQL Console" pour obtenir cette belle vue de votre base de données dans Android Studio: ![enter image description here

2
j3App

C'est une combinaison d'autres réponses avec un plus

  1. Installer navigateur DB pour SQLite
  2. Obtenez l'emplacement exact à partir de l'Explorateur de fichiers du périphérique pour MyBase.db, par exemple "/data/data/com.wurther.myapp/databases/MyBase.db".
  3. Définissez la fenêtre du projet de Android sur Projet - pour que vous puissiez voir les fichiers (build.gradle, gradle.properties, ... etc).
  4. Dans la fenêtre de projet, cliquez avec le bouton droit et choisissez Ouvrir dans le terminal.
  5. Dans le terminal, vous êtes maintenant dans le répertoire racine de votre application à partir du disque dur. Exécutez donc: adb pull /data/data/com.wwhat.myapp/databases/MyBase.db.
  6. Maintenant, dans la fenêtre de projet de votre Android Studio, vous avez un fichier "MyBase.db"
  7. Double-cliquez sur votre fichier db à partir de Project. Vous pouvez maintenant parcourir/modifier vos bases de données dans le navigateur de base de données.
  8. Lorsque vous êtes prêt, il vous suffit d’écrire les modifications dans le navigateur de base de données pour que les bases de données soient enregistrées sur un disque dur.
  9. Dans le terminal avec la commande: adb Push MyBase.db /data/data/com.wurther.myapp/databases/MyBase.db que vous venez d’envoyer du disque dur au périphérique de la base de données modifiée.
1
lawrghita

Je sais que la question est assez ancienne mais je crois que cette question est toujours présente.

Affichage des bases de données depuis votre navigateur

J'ai créé un outil de développement que vous pouvez intégrer en tant que lib dans votre projet d'application Android. L'outil ouvre un socket de serveur dans votre application pour communiquer via un navigateur Web. Vous pouvez parcourir toute votre base de données et télécharger le fichier de base de données directement via le navigateur.

enter image description here

L'intégration peut être faite via jitpack.io:

projet build.gradle:

//...
allprojects {
    repositories {
        jcenter()
        maven { url 'https://jitpack.io' }
    }
}
//...

app build.gradle:

//...
dependencies {
    //...
    debugCompile 'com.github.sanidgmbh:debugghost:v1.1'
    //...
}
//...

Configuration de la classe d'application

Afin de ne compiler DebugGhostLib que dans certains types de construction ou dans différents types de produits, nous avons besoin d'une classe d'application abstraite qui sera dérivée dans les types spéciaux. Placez la classe suivante dans votre dossier main (sous Java> your.app.package):

public class AbstractDebugGhostExampleApplication extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        // Do your general application stuff
    }
}

Maintenant, pour votre type de build de version (ou saveur de produit), vous ajoutez la classe d'application suivante à votre dossier release (ou produit-saveur) (également sous Java> your.app.package):

public class MyApp extends AbstractDebugGhostExampleApplication {
    @Override
    public void onCreate() {
        super.onCreate();
    }
}

C'est la classe d'application qui ne référencera pas DebugGhostLib.

Indiquez également à votre AndroidManifest.xml que vous utilisez votre propre classe d'application. Cela se fera dans votre dossier main:

<manifest package="demo.app.Android.sanid.com.debugghostexample" xmlns:Android="http://schemas.Android.com/apk/res/Android">
    <!-- permissions go here -->
    <application Android:name=".MyApp"> <!-- register your own application class -->
        <!-- your activities go here -->
    </application>
</manifest>

A présent, pour votre type de construction de débogage (ou de type de produit), vous ajoutez la classe d'application suivante à votre dossier debug (ou de type de produit) (également sous Java> your.app.package):

public class MyApp extends AbstractDebugGhostExampleApplication {
    private DebugGhostBridge mDebugGhostBridge;

    @Override
    public void onCreate() {
        super.onCreate();

        mDebugGhostBridge = new DebugGhostBridge(this, MyDatabaseHelper.DATABASE_NAME, MyDatabaseHelper.DATABASE_VERSION);
        mDebugGhostBridge.startDebugGhost();
    }
}

Vous pouvez obtenir le outil ici .

1
TheSmile

J'utilise Windows 7, mon appareil est un API émulé Android _ 23. Je suppose qu'il en va de même pour tout appareil réel, tant qu'il est enraciné et que l'API n'est pas supérieure à 23

Allez dans Outils -> Android -> Android Moniteur de périphériques. Allez dans l'explorateur de fichiers. Dans mon cas, c’est dans data/data // app_webview/database/file_0/1

Je dois ajouter manuellement .db à la fin du fichier nommé "1"

1
Asyraf Arifin

Je devais tirer la base de données du téléphone au PC. Maintenant, j'utilise cette application très bien faite et gratuite qui a beaucoup de fonctionnalités. Cela fonctionne sur API 4.1+avec un périphérique enraciné .
Faites-moi savoir si vous trouvez comment le faire fonctionner sans racine.

Screenshot SqlitePrime

https://play.google.com/store/apps/details?id=com.lastempirestudio.sqliteprime

1
vovahost

C'est une très vieille question et ma réponse est semblable à certaines réponses ci-dessus, mais BEAUCOUP plus rapide. Le script ci-dessous est pour Mac mais je suis sûr que quelqu'un peut le modifier pour Windows.

1) Ouvrez Script Editor sur votre Mac (vous pouvez simplement rechercher Script Editor dans Spotlight)
2) Copiez et collez le texte ci-dessous et modifiez-le avec le chemin d'accès au SDK, le nom du package, etc. (voir ci-dessous).
3) Enregistrez le script !!

C'est ça! Appuyez simplement sur le bouton de lecture en haut pour obtenir le fichier de base de données mis à jour, qui sera sur votre bureau.

remplacez les éléments suivants dans le script ci-dessous:

path_to_my_sdk == >> Mettez le chemin complet de votre sdk
my_package_name == >> nom du package de votre application
myDbName.db == >> nom de fichier de votre base de données

set getLocalDb to "path_to_my_sdk/platform-tools/adb Shell run-as my_package_name chmod 777 databases && path_to_my_sdk/platform-tools/adb Shell run-as my_package_name chmod 777 databases/myDbName.db && path_to_my_sdk/platform-tools/adb Shell run-as my_package_name cp databases/myDbName.db /sdcard/myDbName.db && path_to_my_sdk/platform-tools/adb pull /sdcard/myDbName.db /Users/User/Desktop/myDbName.db"
do Shell script getLocalDb

J'espère que ça aide quelqu'un.

1

J'ai mis en place une automatisation en ligne de commande unix de ce processus et mis le code ici:

https://github.com/elliptic1/Android-Sqlite3-Monitor

C'est un script Shell qui prend le nom du package et celui de la base de données en tant que paramètres, télécharge le fichier de base de données à partir du périphérique attaché Android et exécute le script personnalisé sur le fichier téléchargé. Ensuite, avec un outil unix tel que 'watch', vous pouvez ouvrir une fenêtre de terminal avec une vue mise à jour périodiquement de la sortie du script de votre base de données.

0
elliptic1

Ce n'est peut-être pas la solution que vous cherchez, mais je n'ai pas de meilleur moyen de télécharger une base de données à partir d'un téléphone. Ce que je vais suggérer est de vous assurer que vous utilisez cette mini-DDMS. Ce sera super caché si vous ne cliquez pas sur la très petite boîte de camoflage tout en bas à gauche du programme. (essayé de survoler sinon vous pourriez le manquer.)

Aussi la liste déroulante qui dit pas de filtres (en haut à droite). Il y a littéralement une tonne de façons différentes de surveiller différents processus/applications à l'aide d'un PPID, d'un nom, etc. J'ai toujours utilisé cela pour surveiller mon téléphone, mais gardez à l'esprit que je ne fais pas le genre de travail de développeur qui doit être optimisé à 120%, la base de données ne fait pas quelque chose qui sort de l'ordinaire.

J'espère que ça aide

enter image description here

0
nocommit