【问题标题】:How to use a script to query android sqlite database如何使用脚本查询android sqlite数据库
【发布时间】:2013-05-31 07:16:22
【问题描述】:

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;

【问题讨论】:

标签: android python perl sqlite adb


【解决方案1】:

查询特定值:

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';"

【讨论】:

  • @Alex 我和你有同样的问题,当我输入上面的命令时,出现错误:sqlite3: Error: too many options: "acct",你知道怎么解决吗?您对使用脚本查询android sqlite3的这个问题有什么建议吗?希望得到您的回复,谢谢。
  • @Ying.Zhao 你需要这样引用查询: adb shell sqlite3 /path/file.db '"select * form table;"'
  • 稍微修改一下对我有用,在下面试试我的答案
【解决方案2】:

这个有效。

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

【讨论】:

    【解决方案3】:

    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';\""
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-20
      • 1970-01-01
      相关资源
      最近更新 更多