2013-05-31 2 views
6

Android gespeicherte Einstellungen in einer Datenbankdatei, die /data/data/com.android.providers.settings/databases/settings.db ist.So verwenden Sie ein Skript zum Abfragen von android SQLite-Datenbank

Android verwenden sqlite3 als Datenbank. Wir können adb verwenden, um die Datenbankdatei zu verwalten. Ich möchte wissen, ob es eine Möglichkeit gibt, alle diese Befehle in einem perl/python Skript auszuführen, um den gesamten Abfrageprozess zu automatisieren?

$adb shell 
$sqlite3 /data/data/com.android.providers.settings/databases/settings.db 

Der obige Befehl öffnet die Einstellungsdatenbank. Dann kommst du in die sqlite3-Befehlszeile.

Zuerst prüfen, wie viele Tabellen in der Datenbank vorhanden waren. Hier listet das Ergebnis auf.

sqlite> .tables 

android_metadata bookmarks   gservices   
bluetooth_devices favorites   system 

Die Einstellungen (wie volume_alarm) Ich möchte bekommen sind in „System“ Tisch, ein .dump Befehl, um alle Elemente in der Tabelle auflistet.

sqlite> .dump system 
BEGIN TRANSACTION; 
CREATE TABLE system (_id INTEGER PRIMARY KEY AUTOINCREMENT,name TEXT UNIQUE ON CONFLICT REPLACE,value TEXT); 
INSERT INTO "system" VALUES(3,’volume_system’,’5′); 
INSERT INTO "system" VALUES(4,’volume_voice’,’4′); 
INSERT INTO "system" VALUES(5,’volume_alarm’,’6′); 
..... 
$ select value from system where name ='volume_alarm'; 
select value from system where name ='volume_alarm' 
6 
$.quit; 
+0

ja, Sie können. http://search.cpan.org/~msergeant/DBD-SQLite-0.31/lib/DBD/SQLite.pm –

+0

@mpapec, will er perl/python auf dem PC verwenden, um Datenbank auf dem Gerät abzufragen. Das sqlite Perl-Modul wird nicht helfen, es sei denn, er würde die Datenbankdatei zum PC ziehen. –

Antwort

12

Um einen bestimmten Wert abfragen:

adb shell sqlite3 /data/data/com.android.providers.settings/databases/settings.db "select value from 'system' where name = 'volume_alarm';" 

oder alle Datensätze aus einer Tabelle zu ziehen:

adb shell sqlite3 /data/data/com.android.providers.settings/databases/settings.db "select name, value from 'system';" 
+1

hast du die Tür für mich geöffnet. Danke vielmals. – ericyoung

+1

@Alex Ich habe die gleiche Frage mit dir, und wenn ich den obigen Befehl eingeben, gibt es einen Fehler: 'sqlite3: Fehler: zu viele Optionen:" acct "', Weißt du, wie man es löst? Und haben Sie irgendwelche Vorschläge zu diesem Thema, die ein Skript verwenden, um Android sqlite3 abzufragen? hoffe deine antwort, danke. –

+0

@ Ying.Zhao ned, um die Abfrage wie folgt zu zitieren: adb Shell sqlite3 /path/file.db '"wählen * Form Tabelle;"' – pelotasplus

0

diese funktioniert.

adb shell sqlite3 /data/data/com.android.providers.settings/databases/settings.db "\" auswählen Name, Wert von 'System', \ ""

+0

Fehler: unerkannt Token: "" wählen etc ..... '" –

Verwandte Themen