10

我已经阅读了关于如何访问数据库内容的问题的答案,但是我似乎无法让它在我的机器上工作。这是外壳日志:

C:\android-sdk-windows\tools>adb -s emulator-5554 shell
# sqlite3 /data/data/com.android.demo.notepad2/databases/notes
sqlite3 /data/data/com.android.demo.notepad2/databases/notes
SQLite version 3.5.9
Enter ".help" for instructions
sqlite> .tables
.tables
sqlite> ^C
C:\android-sdk-windows\tools>

SQLite 只是简单地将我的命令回显给我,即使 Eclipse 文件浏览器告诉我它存在。如果我使用 sqlite3 工具并使用“.tables”,则接受命令。

模拟器中的 SQLite 语法是否不同是我遗漏了什么吗?

(抱歉这么多问题,Android 上似乎没有太多连贯的文档!)

谢谢!

4

4 回答 4

13

我可以告诉你,它在 Android 2.0.1 上对我来说很好用:

$ adb shell
# cd /data/data/apt.tutorial   
# ls
lib
databases
shared_prefs
# cd databases
# ls
lunchlist.db
# sqlite3 lunchlist.db
SQLite version 3.5.9
Enter ".help" for instructions
sqlite> .tables
android_metadata  restaurants     
sqlite> .exit
# exit

您始终可以使用 DDMS 下载数据库文件,或者adb pull使用桌面 SQLite 客户端对其进行检查。例如,我使用 Firefox 的 SQLite Manager 插件。

另外,请记住 SQLite 没有默认的文件扩展名,所以如果你的数据库不是notesbut notes.dbor notes.sqliteor something,你需要指定扩展名。

此外,我还没有在 Windows 上尝试过这个,并且有可能是 Windows 命令提示符和 Android 设备上可用的有限 shell 有一些愚蠢的东西导致你遇到困难。

于 2009-12-26T20:10:09.203 回答
3

如果您想从命令行发出 sqlite3 语句,请使用类似

$ adb -e shell sqlite3 -batch /data/data/com.example.dbsample/databases/db '.tables'
android_metadata

$ adb -e shell sqlite3 -batch /data/data/com.example.dbsample/databases/db 'select * from android_metadata;'
en_US

明显的优点是你可以依赖你的 shell 历史并且你可以在脚本中使用它。

于 2010-01-04T23:59:11.887 回答
1

我遇到了同样的问题,发现与文档相反,您不应该将“.db”扩展名放在数据库文件名上。

注意:我使用的是 win7 和 2.1 模拟器。

于 2010-11-09T03:55:00.453 回答
0

我遇到了同样的问题,花了将近一个小时,在这里发布这样可以节省其他人的时间,检查您是否提供了正确的文件名以及扩展名,数据库文件夹 myDB.db 和 myDB.db 下有两个文件-journal,当我运行
“sqlite3 /data/data/com.my.package/databases/myDB”
并且
.tables
没有列出任何内容时,sqlite3 创建了一个名为 myDB 的新数据库,它没有打开 myDB.db

于 2016-05-24T13:46:31.710 回答