adb无法显示/打开/连接数据库

时间:2011-05-31 09:58:03

标签: android adb

我尝试使用adb来查询我的sqlite3数据库。我在我的应用程序模拟器上使用此数据库没有任何问题,但我无法从adb shell查询它。我在这里和Android开发者指南上阅读了很多内容,以了解我的问题/错误,但我还没有解决任何问题。

以下是我尝试从adb查询数据库时会发生的情况:

  

adb -s emulator-5554 shell
  sqlite3 /data/data/rf.stats/databases/sstatsdb.db
  SQLite版本3.5.9
  输入“.help”获取说明   源码> .tables
  源码>从游戏中选择*;   SQL错误:没有这样的表:游戏
  源码> .databases
  seq名称文件
  --- --------------- -------------------------------- --------------------------
  0 main /data/data/rf.stats/databases/sstatsdb.db
  1个temp / sqlite_stmt_journals / etilqs_H2EoeecYlb1UK2U

为什么我不能从adb shell查询我的数据库,因为它在模拟器中有效?

我使用的是Android 10.0.1和Java SDK 6的Ububtu Lucid。

4 个答案:

答案 0 :(得分:2)

adb无权查看手机上的/data。模拟器没有此限制。它是安全模型的一部分,阻止人们访问属于第三方应用程序的数据。

有两种方法可以解决这个问题:

  • 官方方法是将您的应用程序设置为可调试(通过将android:debuggable="true"放入清单中的<application>元素),然后使用DDMS;但是,我从来没有设法做到这一点。

  • 非正式但更有用的方法是使用SuperOneClick之类的东西越狱手机。这将允许您以root身份使用adb登录,这将使您可以完全访问手机上的所有数据(包括您的应用程序)。

答案 1 :(得分:1)

这适用于Windows,它也适用于Ubuntu。首先导航到平台工具目录:

> cd C:\Users\[Your Username]\android-sdks\platform-tools
> adb shell
> cd data/data/[application namespace]/databases/
# sqlite3 [Database Name].db
sqlite> select * from [Table Name];

替换括号“[”...“]”之间的内容,它应该有效。诀窍是,一旦你进入adb shell导航到属于你的特定应用程序的数据库目录,然后运行sqlite3进行查询。否则sqlite3将无法查找正确的位置。

皮特

答案 2 :(得分:0)

我建议检查您询问的表是否确实存在于此数据库中,因为

sqlite> .tables

应返回在/data/data/rf.stats/databases/sstatsdb.db数据库中创建的所有表。以下是填充的DB的示例输出:

sqlite3 webview.db
SQLite version 3.6.22
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> .tables
.tables
android_metadata  formdata          httpauth
cookies           formurl           password

答案 3 :(得分:0)

我遇到了这个问题。输入sqlite3 /data/data/rf.stats/databases/sstatsdb 没有.db

希望它能解决你的问题。

相关问题