web-dev-qa-db-fra.com

Comment utiliser ADB dans Android Studio pour afficher une base de données SQLite

J'ai besoin de visualiser ma base de données SQLite mais je ne sais pas comment le faire. Je suis allé à http://www.sqlite.org/download.html et j'ai téléchargé la ligne de commande Shell pour mon système d'exploitation, mais lorsque j'exécute le programme et tape adb ... je reçois les erreurs.

Remarque: J'utilise Android Studio, je suppose donc que je n'ai pas besoin d'installer d'éléments supplémentaires car je me souviens que Android Studio a indiqué qu'il disposait de tous les outils SDK nécessaires.

72
Terence Chow

Manière la plus simple: 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/sqlite3.html

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

4a- Vous pouvez ignorer cette étape sur le périphérique enraciné

run-as <your-package-name> 

4b- 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. Imprimer la table entière:

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

    .help
    
140
Dheeraj Bhaskar

Le moyen le plus simple pour moi consiste à utiliser Android Device Monitor pour que le fichier de base de données et le navigateur SQLite DataBase Browser s'affichent tout en utilisant Android Studio pour programmer Android.

1) Exécutez et lancez l'application de base de données avec Android émulateur de Android Studio. (J'ai inséré des données dans l'application de base de données pour vérifier)

2) Exécutez Android Device Monitor. Comment courir ?; Allez à [your_folder] > sdk >tools. Vous pouvez voir monitor.bat dans ce dossier. shift + right click dans le dossier et sélectionnez "Open command window here". Cette action lancera l'invite de commande. tapez monitor et Android Device Monitor va être lancé.

3) Sélectionnez l’émulateur que vous exécutez actuellement. Ensuite, allez à data>data>[your_app_name]>databases

4) Cliquez sur l'icône (située dans le coin supérieur droit) (survolez l'icône et vous verrez "extraire un fichier de l'appareil") et sauvegardez où bon vous semble

5) Lancez SQLite DataBase Browser. Glissez et déposez le fichier que vous venez de sauvegarder dans ce navigateur.

6) Allez sur l’onglet Browse Data et sélectionnez le tableau à afficher.

enter image description hereenter image description here

75
aknay

Le problème que vous rencontrez est commun et n'est pas bien expliqué dans la documentation. Les périphériques normaux n'incluent pas le binaire de la base de données sqlite3, raison pour laquelle vous obtenez une erreur. les Android Emeulator, OSX, Linux (le cas échéant) et Windows (après l’installation) disposent du fichier binaire vous permettant d’ouvrir une base de données localement sur votre ordinateur.

La solution consiste à copier la base de données de votre appareil sur votre ordinateur local. Ceci peut être accompli avec ADB mais nécessite un certain nombre d'étapes.

Avant de commencer, vous aurez besoin de quelques informations:

  • chemin du SDK (s'il n'est pas inclus dans l'environnement de votre système d'exploitation)
  • votre <package name>, par exemple, com.example.application
  • un <local path> pour placer votre base de données, par exemple. ~/Desktop ou %userprofile%\Desktop

Ensuite, vous devrez comprendre le terminal dans lequel chaque commande est écrite dans le premier caractère des exemples ci-dessous.

  • > = votre invite de commande du système d'exploitation
  • $ = Invite de commande du shell ADB
  • ! = Shell ADB en tant que commande admin
  • %

Ensuite, entrez les commandes suivantes à partir de Terminal ou Commande (n'entrez pas le premier caractère ou le texte dans ())

> adb Shell
$ su
! cp /data/data/<package name>/Databases/<database name> /sdcard
! exit
$ exit
> adb pull /sdcard/<database name> <local path>
> sqlite3 <local db path>
% .dump
% .exit  (to exit sqldb)

C’est une façon très pratique de copier la base de données sur votre machine locale et de la lire localement. Il existe SO et d'autres ressources expliquant comment installer le binaire sqlite3 sur votre périphérique à partir d'un émulateur, mais ce processus ne fonctionne que pour un accès unique.

Si vous avez besoin d'accéder à la base de données de manière interactive, je vous suggère d'exécuter votre application dans un émulateur (qui possédait déjà sqlite3) ou installer sqlite sur le chemin de votre périphérique/xbin .

14
hoss

Qu'est-ce qu'il mentionne comme vous tapez adb?

step1. >adb Shell
step2. >cd data/data
step3. >ls -l|grep "your app package here"
step4. >cd "your app package here"
step5. >sqlite3 xx.db
8
log1000
  1. Ouvrir un terminal
  2. cd <Android_SDK_PATH> (pour moi sous Windows cd C:\Users\Willi\AppData\Local\Android\sdk)
  3. cd platform-tools
  4. adb Shell (cela ne fonctionne que si un seul émulateur est en cours d'exécution)
  5. cd data/data
  6. su (obtenir les privilèges de super utilisateur)
  7. cd <PACKAGE_NAME>/databases
  8. sqlite3 <DB_NAME>
  9. émet des instructions SQL (important: les termine par ;, sinon l'instruction n'est pas émise et passe à une nouvelle ligne.)

Remarque: Utilisez ls (Linux) ou dir (Windows) si vous devez répertorier le contenu du répertoire.

7
Willi Mentzel

Vous pouvez utiliser un outil très agréable appelé Stetho en l'ajoutant au fichier build.gradle:

compile 'com.facebook.stetho:stetho:1.4.1'

Et l’a initialisée dans votre méthode Application ou ActivityonCreate():

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Stetho.initializeWithDefaults(this);
    setContentView(R.layout.activity_main);
}

Ensuite, vous pouvez afficher les enregistrements de base de données en chrome à l’adresse:

chrome://inspect/#devices

Pour plus de détails, vous pouvez lire mon post: Comment visualiser facilement vos enregistrements de base de données

4
yshahak

Selon les périphériques, il est possible que la commande sqlite3 ne soit pas trouvée dans le shell adb. Dans ce cas, vous voudrez peut-être suivre ceci:

adb Shell

$ run-as package.name
$ cd ./databases/
$ ls -l #Trouvez les autorisations actuelles - r = 4, w = 2, x = 1
$ chmod 666 ./dbname.db
$ exit
$ exit
adb pull /data/data/package.name/databases/dbname.db ~/Desktop /
adb Push ~/Desktop/nombase.db /data/data/package.name/databases/dbname.db
adb Shell
$ run-as package.name
$ chmod 660 ./databases/dbname.db #Restore les autorisations d'origine
$ exit
$ exit

pour référence aller à https://stackoverflow.com/a/17177091/3758972 .

Il peut arriver que vous obteniez un "objet distant introuvable" après avoir suivi la procédure ci-dessus. Ensuite, modifiez l'autorisation de votre dossier de base de données sur 755 dans le shell adb.

$ chmod 755 bases de données /

Mais attention, cela ne fonctionnera que sur Android version <21.

4
Nitesh Verma