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?
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:
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.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.Tools -> SQLiteManager.
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.
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:
Maintenant sélectionnez data -> data -> your project name.
:)
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.
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)
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
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:
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
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