2013-05-31 36 views
6

Android cài đặt đã lưu trong tệp cơ sở dữ liệu là /data/data/com.android.providers.settings/databases/settings.db.Cách sử dụng tập lệnh để truy vấn cơ sở dữ liệu sqlite android

Sử dụng Android sqlite3 làm cơ sở dữ liệu. Chúng tôi có thể sử dụng adb để quản lý tệp cơ sở dữ liệu. Tôi muốn biết nếu có một cách để chạy tất cả các lệnh này trong một kịch bản perl/python để tự động hóa toàn bộ quá trình truy vấn?

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

Lệnh trên sẽ mở cơ sở dữ liệu cài đặt. Sau đó, bạn sẽ nhập vào dòng lệnh sqlite3.

Trước tiên hãy kiểm tra xem có bao nhiêu bảng tồn tại trong cơ sở dữ liệu. Dưới đây liệt kê kết quả.

sqlite> .tables 

android_metadata bookmarks   gservices   
bluetooth_devices favorites   system 

Cài đặt (chẳng hạn như volume_alarm) Tôi muốn có trong bảng "hệ thống", lệnh .dump sẽ liệt kê tất cả các mục trong bảng.

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

có, bạn có thể. http://search.cpan.org/~msergeant/DBD-SQLite-0.31/lib/DBD/SQLite.pm –

+0

@mpapec, anh ấy muốn sử dụng perl/python trên PC để truy vấn cơ sở dữ liệu trên thiết bị. các mô-đun perl sqlite sẽ không giúp đỡ trừ khi anh ta sẽ kéo tập tin cơ sở dữ liệu vào máy tính. –

Trả lời

12

Để truy vấn một giá trị cụ thể:

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

Hoặc để kéo tất cả các bản ghi từ một bảng:

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

bạn mở cửa cho tôi. Cảm ơn nhiều. – ericyoung

+1

@ Alex Tôi có cùng câu hỏi với bạn và khi tôi nhập lệnh ở trên, có lỗi: 'sqlite3: Lỗi: quá nhiều tùy chọn:" acct "', Bạn có biết cách giải quyết nó không? Và bạn có bất cứ đề nghị về vấn đề này sử dụng một kịch bản để truy vấn sqlite3 android? hy vọng trả lời của bạn, cảm ơn. –

+0

@ Ying.Zhao bạn đã trích dẫn truy vấn như thế này: adb shell sqlite3 /path/file.db '"chọn * biểu mẫu bảng;"' – pelotasplus

0

này hoạt động.

adb shell sqlite3 /data/data/com.android.providers.settings/databases/settings.db "\" chọn tên, giá trị từ 'hệ thống'; \ ""

+0

Lỗi: mã thông báo không được công nhận: "" chọn v.v. " –

Các vấn đề liên quan