Einfachster Weg: Stellen Sie über ADB Shell eine Verbindung zu Sqlite3 her
Ich habe in Android Studio keine Möglichkeit gefunden, dies zu tun, aber ich greife mit einer Remote-Shell auf die Datenbank zu, anstatt jedes Mal die Datei abzurufen.
Alle Informationen finden Sie hier:
http://developer.android.com/tools/help/sqlite3.html
1- Wechseln Sie an einer Eingabeaufforderung zu Ihrem Plattform-Tools-Ordner
2- Geben Sie den Befehl ein adb devices
, um die Liste Ihrer Geräte abzurufen
C:\Android\adt-bundle-windows-x86_64\sdk\platform-tools>adb devices
List of devices attached
emulator-xxxx device
3- Schließen Sie eine Shell an Ihr Gerät an:
C:\Android\adt-bundle-windows-x86_64\sdk\platform-tools>adb -s emulator-xxxx shell
4a- Sie können diesen Schritt auf einem gerooteten Gerät umgehen
run-as <your-package-name>
4b- Navigieren Sie zu dem Ordner, der Ihre Datenbankdatei enthält:
cd data/data/<your-package-name>/databases/
5- Führen Sie sqlite3 aus, um eine Verbindung zu Ihrer Datenbank herzustellen:
sqlite3 <your-db-name>.db
6- Führen Sie sqlite3-Befehle aus, die Ihnen gefallen, z.
Select * from table1 where ...;
Hinweis: Weitere Befehle zum Ausführen finden Sie unten.
SQLite Cheatsheet
Es gibt einige Schritte, um die Tabellen in einer SQLite-Datenbank anzuzeigen:
Listen Sie die Tabellen in Ihrer Datenbank auf:
.tables
Listen Sie auf, wie die Tabelle aussieht:
.schema tablename
Drucken Sie die gesamte Tabelle:
SELECT * FROM tablename;
Listen Sie alle verfügbaren SQLite-Eingabeaufforderungsbefehle auf:
.help
/data/data
Verzeichnis gehencp /data/data/<your-package-name>/databases/<your-db-name>.db /sdcard
. Verwenden Sie dann einen Dateimanager wie Explorer, um die Datei an Ihre E-Mail zu senden. :)Der einfachste Weg für mich ist die Verwendung des Android-Gerätemonitors, um die Datenbankdatei abzurufen, und des SQLite-Datenbankbrowsers, um die Datei anzuzeigen, während Android Studio weiterhin zum Programmieren von Android verwendet wird.
1) Führen Sie die Datenbank-App mit dem Android-Emulator von Android Studio aus und starten Sie sie. (Ich habe einige Daten in die Datenbank-App eingefügt, um sie zu überprüfen.)
2) Führen Sie den Android-Gerätemonitor aus. Wie läuft man?; Gehe zu
[your_folder] > sdk >tools
. Sie können monitor.bat in diesem Ordner sehen.shift + right click
im Ordner und wählen Sie "Open command window here
". Diese Aktion startet die Eingabeaufforderung. Typmonitor
und Android-Gerätemonitor werden gestartet.3) Wählen Sie den Emulator aus, den Sie gerade ausführen. Dann geh zu
data>data>[your_app_name]>databases
4) Klicken Sie auf das Symbol (oben rechts) (bewegen Sie den Mauszeiger über das Symbol und Sie sehen "Datei vom Gerät ziehen") und speichern Sie es an einer beliebigen Stelle
5) Starten Sie den SQLite DataBase Browser. Ziehen Sie die gerade gespeicherte Datei in diesen Browser und legen Sie sie dort ab.
6) Gehen Sie zur
Browse Data
Registerkarte und wählen Sie Ihre Tabelle zum Anzeigen aus.quelle
Das Problem, das Sie haben, ist häufig und wird in der Dokumentation nicht gut erklärt. Normale Geräte enthalten keine SQLite3-Datenbank-Binärdatei, weshalb eine Fehlermeldung angezeigt wird. Android Emeulator, OSX, Linux (falls installiert) und Windows (nach der Installation) verfügen über die Binärdatei, sodass Sie eine Datenbank lokal auf Ihrem Computer öffnen können.
Die Problemumgehung besteht darin, die Datenbank von Ihrem Gerät auf Ihren lokalen Computer zu kopieren. Dies kann mit ADB erreicht werden, erfordert jedoch eine Reihe von Schritten.
Bevor Sie beginnen, benötigen Sie einige Informationen:
<package name>
zum Beispielcom.example.application
<local path>
, um Ihre Datenbank zu platzieren, z.~/Desktop
oder%userprofile%\Desktop
Als nächstes müssen Sie verstehen, in welchem Terminal jeder Befehl in das erste Zeichen in den folgenden Beispielen geschrieben wird, nicht eingegeben wird, sondern Sie wissen lassen, in welcher Shell wir uns befinden:
>
= Sie OS Eingabeaufforderung$
= ADB-Shell-Befehl Eingabeaufforderung!
= ADB-Shell als Admin-Eingabeaufforderung%
Geben Sie als Nächstes die folgenden Befehle über Terminal oder Befehl ein (geben Sie nicht das erste Zeichen oder den ersten Text ein
()
).Dies ist eine sehr runde Methode, um die Datenbank auf Ihren lokalen Computer zu kopieren und die Datenbank lokal zu lesen. Es gibt SO und andere Ressourcen, die erklären, wie Sie die sqlite3-Binärdatei von einem Emulator auf Ihrem Gerät installieren. Bei einem einmaligen Zugriff funktioniert dieser Vorgang jedoch.
Wenn Sie interaktiv auf die Datenbank zugreifen müssen, würde ich empfehlen, Ihre App in einem Emulator (der bereits sqlite3 hatte) auszuführen oder sqlite auf Ihrem Geräte- / xbin-Pfad zu installieren .
quelle
cd <ANDROID_SDK_PATH>
(für mich unter Windowscd C:\Users\Willi\AppData\Local\Android\sdk
)cd platform-tools
adb shell
(Dies funktioniert nur, wenn nur ein Emulator ausgeführt wird.)cd data/data
su
(Superuser-Berechtigungen erhalten)cd <PACKAGE_NAME>/databases
sqlite3 <DB_NAME>
;
, andernfalls wird die Anweisung nicht ausgegeben und bricht stattdessen in eine neue Zeile ein.)Hinweis: Verwenden Sie
ls
(Linux) oderdir
(Windows), wenn Sie Verzeichnisinhalte auflisten müssen.quelle
Was wird erwähnt, wenn Sie adb eingeben?
quelle
adb
ich tippen soll ... Wenn ich es in die SQLite3-Shell tippe, gibt es mir...>
und es erwartet eine Fortsetzung eines Befehls. Es wartet im Grunde auf eine;
. Wenn ich das Semikolon eingebe, das ich erhalteerror: near "adb": syntax error
... Wenn ichadb shell
eine Eingabeaufforderung eingebe, wird mir mitgeteilt, dass adb kein erkannter Befehl ist ... Soll ich meinen Pfaddateien adb hinzufügen?/system/bin/sh: sqlite3: not found
... und ich habe bereits SQLite3 und ADB als Pfadvariablen hinzugefügt ...Sie können ein sehr schönes Tool verwenden, das aufgerufen
Stetho
wird, indem Sie es derbuild.gradle
Datei hinzufügen :Und initialisiert es in Ihrer
Application
oderActivity
onCreate()
Methode:Dann können Sie die DB-Datensätze in Chrom unter der folgenden Adresse anzeigen :
Für weitere Details können Sie meinen Beitrag lesen: So zeigen Sie einfach Ihre Datenbankaufzeichnungen an
quelle
Abhängig von den Geräten finden Sie den Befehl sqlite3 möglicherweise nicht in der ADB-Shell. In diesem Fall möchten Sie möglicherweise Folgendes befolgen:
ADB Shell
Informationen finden Sie unter https://stackoverflow.com/a/17177091/3758972 .
Es kann Fälle geben, in denen nach dem oben beschriebenen Verfahren "Remote-Objekt nicht gefunden" angezeigt wird. Ändern Sie dann die Berechtigung Ihres Datenbankordners in der ADB-Shell in 755.
Aber bitte beachten Sie, dass es nur auf Android-Version <21 funktioniert.
quelle