如何使用脚本来查询android sqlite数据库

时间:2013-05-31 07:16:23

标签: android python perl sqlite adb

Android已将设置保存在/data/data/com.android.providers.settings/databases/settings.db的数据库文件中。

Android使用sqlite3作为数据库。我们可以使用adb来管理数据库文件。我想知道是否有办法在perl/python脚本中运行所有这些命令以自动执行整个查询过程?

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

以上命令将打开设置数据库。然后你将进入sqlite3命令行。

首先检查数据库中存在多少个表。这里列出了结果。

sqlite> .tables

android_metadata   bookmarks          gservices        
bluetooth_devices  favorites          system  

我想要获取的设置(例如volume_alarm)位于“system”表中,.dump命令将列出表中的所有项目。

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;

3 个答案:

答案 0 :(得分:12)

查询特定值:

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

或者从表中提取所有记录:

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

答案 1 :(得分:0)

这个有效。

adb shell sqlite3 /data/data/com.android.providers.settings/databases/settings.db" \"从系统中选择名称,值'; \&# 34;"

答案 2 :(得分:0)

Alex P的答案对我来说并不合适,但确实如此:

查询特定值

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

或者从表中提取所有记录:

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