2013-05-31 10 views
6

Android zapisane ustawienia w pliku bazy danych, który jest /data/data/com.android.providers.settings/databases/settings.db.Jak użyć skryptu do zapytania bazy danych sqlite Android

Używanie systemu Android sqlite3 jako bazy danych. Możemy użyć adb do zarządzania plikiem bazy danych. Chcę wiedzieć, czy istnieje sposób uruchomienia wszystkich tych poleceń w skrypcie perl/python w celu zautomatyzowania całego procesu zapytania?

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

Powyższe polecenie otworzy bazę danych ustawień. Następnie wprowadzisz do linii poleceń sqlite3.

Najpierw sprawdź, ile tabel istnieje w bazie danych. Tutaj wymieniony jest wynik.

sqlite> .tables 

android_metadata bookmarks   gservices   
bluetooth_devices favorites   system 

ustawień (takich jak volume_alarm) Chcę dostać się w tabeli „System”, polecenie .dump będzie wymienić wszystkie elementy w tabeli.

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

tak, można. http://search.cpan.org/~msergeant/DBD-SQLite-0.31/lib/DBD/SQLite.pm –

+0

@mpapec, chce używać perl/python na PC do bazy danych zapytania na urządzeniu. moduł perl sqlite nie pomoże, dopóki nie ściągnie pliku bazy danych na komputer. –

Odpowiedz

12

Aby wyszukać konkretną wartość:

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

Albo wyciągnąć wszystkie rekordy z tabeli:

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

otworzyłeś mi drzwi. Wielkie dzięki. – ericyoung

+1

@Alex Mam takie samo pytanie z tobą, a kiedy wprowadzę powyższe polecenie, wystąpił błąd: 'sqlite3: Błąd: zbyt wiele opcji:" acct "', Czy wiesz jak to rozwiązać? Czy masz jakieś sugestie na temat tego problemu, które używają skryptu do kwerendy Android sqlite3? Mam nadzieję, że twoja odpowiedź, dzięki. –

+0

@ Ying.Zhao ned zacytować kwerendę w następujący sposób: adb powłoki sqlite3/path/file.db '"wybierz * formularz tabeli;"' – pelotasplus

0

ten działa.

adb shell sqlite3 /data/data/com.android.providers.settings/databases/settings.db "\" wybierz nazwę, wartość z 'systemu'; \ ""

+0

Błąd: nierozpoznany token: "" wybierz etc ..... '" –