web-dev-qa-db-fra.com

Comment afficher les données insérées dans la base de données SQLite sur Android Studio

Voulez-vous m'aider s'il vous plaît avec ce problème.

J'insère des valeurs dans ma base de données SQLite.

Comment puis-je vérifier ou afficher les données insérées.

Existe-t-il un outil ou d'autres techniques pour afficher les données?

6
Bivin Vinod

Si vous souhaitez afficher une donnée sur Log essayez ci-dessous le code:

for (Contact cn : contacts) {
            String log = "Id: "+cn.getID()+" ,Name: " + cn.getName() + " ,Phone: " + cn.getPhoneNumber();
                // Writing Contacts to log
        Log.d("Name: ", log);

Autre façon d'afficher une database voir les étapes ci-dessous:

  1. Accédez à Tools -> DDMS ou cliquez sur l'icône du moniteur de périphérique en regard de Gestionnaire de SDK dans la barre d'outils.
  2. La fenêtre Device Monitor s'ouvre. Dans l'onglet Explorateur de fichiers, cliquez sur data -> data -> your project name. Une fois que le fichier de votre base de données sera ouvert. Cliquez sur pull a file from device icon. Enregistrez le fichier en utilisant l’extension .db.
  3. Ouvrez FireFox, appuyez sur Alt, Tools -> SQLiteManager.
  4. Suivez Base de données -> connexion à la base de données -> parcourez votre fichier de base de données et cliquez sur OK. Votre fichier SQLite sera ouvert maintenant.

Si vous téléchargez une base de données sur DDMS, vous téléchargez 

DB.Browser.for.SQLite-3.10.1-win64

et mettez le fichier database sur ce logiciel et vous obtenez les données. 


NOUVELLE MISE À JOUR DE DDMS

  • Je mettrai à jour ma réponse car il y a quelques jours, la mise à jour Android Studio sous Android Studio 3.1 ou une version similaire à celle d'aujourd'hui 3.2 dans ce Studio DDMS n'est pas disponible, mais ne vous inquiétez pas, j'ai une autre solution.

  • Dans votre Android Studio Voir le coin inférieur droit, il y a une option comme Explorateur de fichiers de périphériques Cliquez sur ce bouton 

Après cela, vous pouvez voir que l'image ci-dessous est ouverte sur votre écran:

 enter image description here

Maintenant sélectionnez data -> data -> your project name. :)

7
Ali

Je n'arrive pas à croire que personne n'en parle, mais ce que vous recherchez probablement est Base de données Android Debug

Fonctionne également très bien avec Android Room et vous pouvez afficher, modifier des tableaux et des enregistrements.

5
Bmbariah

Bien que vous ayez approuvé Cassius Clay's answer, si vous devez traiter les données brutes

la racine n'est pas nécessaire (si ce n'est pas sur la carte SD, suivez la réponse de @Ankit)

import os
import sys
import subprocess
import sqlite3
import pandas as pd

arg_folder = sys.argv[1]  # root folder to recursively search db files from
output_lines = subprocess.check_output(['adb', 'Shell', ('ls -R %s' % arg_folder)]).decode('utf-8').splitlines()
db_files = []
current_folder = ''
for line in output_lines:
    """
        Output example for 'ls -R /data/data':
            /data/data/org.fdroid.fdroid/files/fdroid/repo/icons:

            /data/data/org.fdroid.fdroid/shared_prefs:
            apks-pending-install.xml
            org.fdroid.fdroid_preferences.xml

            /data/data/ru.meefik.busybox:
            cache
            files
            lib
            shared_prefs

        if line contains '/' it's a directory, we want to extract the full path for '.db' files
    """
    if line.__contains__('/'):
        current_folder = line
    Elif line.endswith('.db'):
        db_files.append('%s/%s' % (current_folder[:-1], line))
print("Listing databases..")

while True:
    try:
        for idx, full_path in enumerate(db_files):
            print("{}) {}".format(idx + 1, full_path))
        i = input("Enter database number : ")
        db = db_files[int(i) - 1]  # selected database
        subprocess.check_output(['adb', 'pull', db])  # pulling the .db file from device to local
        db = db.split('/')[-1]  # "/data/data/com.app/folder/private.db".split('/')[-1] = private
        conn = sqlite3.connect(db)
        # getting list of current database tables
        tables = conn.execute("SELECT name FROM sqlite_master WHERE type='table';").fetchall()
        for table in tables:
            table = table[0]  # little fix, it comes as a Tuple
            print('%s%s' % (db[:-2], table))
            with pd.option_context('display.width', 1000):  # setting terminal width to view all table columns inline
                print(pd.read_sql_query("SELECT * FROM %s" % table, conn))  # print table content
            print('- ' * 50)  # table print separator
        # cleanup
        if input('remove database file (from local) [y/N] ? ').lower() == 'y':
            print('removing ', db)
            os.remove(db)
        # repeat
        c = input("Press ENTER to continue or CTRL+C to Quit..")
    except KeyboardInterrupt:
        exit(0)

 preview 2..

Voici un très long-one-liner moins humain-amical

read -p "enter root folder to recursively search db files from: " f;dbs=( $(adb Shell ls -R $f |
    while read line
    do
        line=$(echo $line | tr -d '\r')
        if [[ "$line" =~ ^/.*:$ ]]
        then
            dir=${line%:}
        Elif [[ "$line" = "opendir failed" ]]
        then
            echo "$dir - permission denied"
        else
            if [[ "$dir" = "/" ]]; then dir=""; fi
            echo "$dir/$line" | grep '\.db$'
        fi
    done)
);echo ${dbs[@]}; dbs+=(exit);select db in "${dbs[@]}"; do
  [[ $db == exit ]] && break
  echo "You have chosen $db"
  adb pull $db
  python -c 'import sqlite3;import pandas as pd;db=sqlite3.connect("'${db##*/}'");tables=db.cursor().execute("SELECT name FROM sqlite_master WHERE type=\"table\";").fetchall();print([pd.read_sql_query("SELECT * FROM %s" % t[0], db) for t in tables]);'
done

GIF parce que je suis trop paresseux pour documenter 

 preview..

3
Iddo

L'approche DDMS ne fonctionne pas dans un périphérique non enraciné

Je suis Comment vérifier la base de données sur un périphérique Android non root pour importer la base de données SQLite depuis un périphérique vers un PC.

Suivez les étapes indiquées:

  1. Ouvrez le terminal dans Android Studio
  2. Remplacez le répertoire par défaut par your_path_to> SDK> platform-tools>
  3. adb Shell run-as [package] chmod 777/data/data/[package]/database /

    shell adb run-as [package] chmod 777/data/data/[package]/databases/[nom_fichier_bd]

    shell adb run-as [paquet] cp/data/data/[paquet]/bases de données/[nom_fichier_bd]/sdcard /

    adb pull/sdcard/[nom_fichier_bd]

4.Vérifiez la base de données SQLite extraite dans le dossier sdk> platform-tools

Vous pouvez maintenant utiliser n'importe quel visualiseur SQLite pour afficher la base de données extraite.

Remarque: Deux autorisations sont requises dans le fichier manifeste, sinon les données ne seront pas copiées dans la base de données extraite.

Android.permission.WRITE_EXTERNAL_STORAGE Android.permission.READ_EXTERNAL_STORAGE

2
Ankit

Vous pouvez ajouter, éditer, vérifier toutes vos données de tables de base de données, y compris vos données de préférences partagées, avec cette bibliothèque (base de données de débogage de base de données) Suivez ce lien pour installer .

Tout ce que vous avez à faire est de simplement mettre la dépendance, de compiler et d’exécuter le programme, vous trouverez un lien du type (votre_nom_package D/DebugDB: Open http://172.16.6.117:8081 dans votre navigateur) dans logcat qui affichera toute votre base de données sur le navigateur  enter image description here

0
Aditya Rohilla