web-dev-qa-db-de.com

So zeigen Sie eingefügte Daten in der Sqlite-Datenbank in Android Studio an

Helfen Sie mir bitte bei diesem Problem.

Ich füge Werte in meine Sqlite-Datenbank ein.

Wie kann ich die eingefügten Daten prüfen oder anzeigen?.

Gibt es ein Werkzeug oder andere Techniken, um die Daten anzuzeigen?

6
Bivin Vinod

Wenn Sie Daten zu Log anzeigen möchten, versuchen Sie es mit dem folgenden Code:

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

Andere Möglichkeit, eine database anzuzeigen, siehe folgende Schritte:

  1. Gehen Sie zu Tools -> DDMS oder klicken Sie in der Symbolleiste neben dem SDK-Manager auf das Symbol Gerätemonitor.
  2. Das Device Monitor-Fenster wird geöffnet. Klicken Sie auf der Registerkarte Datei-Explorer auf data -> data -> your project name.. Danach wird Ihre Datenbankdatei geöffnet. Klicken Sie auf pull a file from device icon. Speichern Sie die Datei mit der Erweiterung .db.
  3. FireFox öffnen, Alt drücken, Tools -> SQLiteManager.
  4. Folgen Sie Datenbank -> Verbindung mit Datenbank herstellen -> durchsuchen Sie Ihre Datenbankdatei und klicken Sie auf OK. Ihre SQLite-Datei wird jetzt geöffnet.

Wenn Sie eine Datenbank auf DDMS herunterladen, laden Sie herunter. 

DB.Browser.for.SQLite-3.10.1-win64

und fügen Sie die database-Datei in diese Software ein und Sie erhalten die Daten. 


NEUES UPDATE VON DDMS

  • Ich aktualisiere meine Antwort, weil jetzt ein Android Studio-Update für Android Studio 3.1 oder bis zu jetzt 3.2 in diesem Studio DDMS Funktion verfügbar ist.

  • In Ihrem Android Studio Siehe rechte untere Ecke, es gibt eine Option wie Device File Explorer Klicken Sie auf diese Schaltfläche 

Danach können Sie sehen, wie das Bild auf Ihrem Bildschirm geöffnet ist:

 enter image description here

Wähle jetzt data -> data -> your project name. :)

7
Ali

Ich kann nicht glauben, dass niemand dies erwähnt hat, aber was Sie wahrscheinlich suchen, ist Android Debug Database

Funktioniert auch gut mit Android Room und Sie können Tabellen und Datensätze anzeigen, bearbeiten.

5
Bmbariah

Obwohl Sie Cassius Clay's answer genehmigt haben, müssen Sie die Rohdaten verarbeiten

root wird nicht benötigt (wenn es nicht auf der SD-Karte ist, folgen Sie der Antwort von @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..

Hier ist ein weniger menschenfreundlicher Very-Long-One-Liner

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, weil ich zu faul bin zu dokumentieren 

 preview..

3
Iddo

DDMS-Ansatz funktioniert nicht in nicht gerooteten Geräten

Ich folge Wie prüfe ich die Datenbank auf einem nicht gerooteten Android-Gerät , um die SQLite-DB vom Gerät auf den PC zu importieren?.

Folge den vorgegebenen Schritten:

  1. Öffnen Sie das Terminal in Android Studio
  2. Ändern Sie das Standardverzeichnis in your_path_to> SDK> Plattform-Tools>
  3. adb-Shell Ausführen als [Paket] chmod 777/data/data/[Paket] /datenbanken /

    adb-Shell Ausführen als [Paket] chmod 777/data/data/[Paket] /datenbanken/[Datenbankdateiname]

    adb-Shell Ausführen als [Paket] cp/data/data/[Paket]/database/[Name der Datenbankdatei]/sdcard /

    adb pull/sdcard/[db_dateiname]

4.Überprüfen Sie die abgerufene SQLite-Datenbank im Ordner sdk> Plattform-Tools

Jetzt können Sie einen beliebigen SQLite Viewer verwenden, um die abgerufene Datenbank anzuzeigen.

Hinweis: In der Manifest-Datei sind zwei Berechtigungen erforderlich. Andernfalls werden die Daten nicht in die Pulled DB kopiert.

Android.permission.WRITE_EXTERNAL_STORAGE Android.permission.READ_EXTERNAL_STORAGE

2
Ankit

Sie können mit dieser Bibliothek (Datenbank-Debug-Datenbank) alle Ihre DB-Tabellendaten einschließlich der gemeinsam genutzten Präferenzdaten hinzufügen, bearbeiten und überprüfen Folgen Sie diesem Link, um zu installieren.

Alles, was Sie tun müssen, ist, die Abhängigkeit zu übernehmen, das Programm zu kompilieren und auszuführen. In logcat finden Sie einen Link wie (Ihr_Paketname D/DebugDB: Öffnen http://172.16.6.117:8081 in Ihrem Browser) die zeigt alle Ihre DB auf Browser  enter image description here

0
Aditya Rohilla