2014-02-22 154 views
0

developer docs中,提到sqlite3可通过adb外壳获得。但是,当我这样做时,我正在查看的数据库看起来完全是空的,而当我在文件并在本地检查它时,它包含它应该。例如,在后一种情况下,.tables列出了表,在前一种情况下,它没有列出任何内容,并且尝试从应存在的表中尝试select返回“错误:没有这样的表”。等通过访问数据库。 adb外壳

没有权限问题 - sqlite3开始毫无怨言,我显然根和权限是660

+0

你究竟如何运行'sqlite3'与'adb'外壳? –

+0

@CL根据[此官方 - 但 - 随便描述](https://developer.android.com/tools/help/adb.html#shellcommands),'adb shell'是一个unix-y远程shell,因此可以在设备的'/ system/bin'中访问二进制文件。然而,在'sqlite3'的情况下,我猜测它使用的是远程文件的本地版本,因为A)我在设备的'/ system/bin'中看不到'sqlite3',B)android SDK在'tools /'目录中包含'sqlite3'的副本。 – delicateLatticeworkFever

+0

你究竟输入了什么来运行'sqlite3'? –

回答

1

在担心有人可能有一天会犯同样愚蠢的错误:当心,如果你的文件路径使用sqlite3不存在,它将根据您正在创建新数据库的假设创建。

显然我登录,cd倒是给/data/data/[app] - 我可以在Android设备显示器的‘资源管理器’中载database/[app].sqlite看到 - 忘记cd database并没有刻意去ls因为我是(有点下意识)假设sqlite3会发出“文件未找到”错误,如果它不存在。这创建了一个空的[app].sqlite文件,这是我后来一直没有找到任何东西。