如何访问Android Emulator数据库的内容?

时间:2009-12-26 19:06:05

标签: android sqlite adb

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

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 个答案:

答案 0 :(得分: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没有默认文件扩展名,因此如果您的数据库不是notesnotes.dbnotes.sqlite或其他内容,则需要指定扩展名

另外,我还没有在Windows上尝试过这种方法,并且有可能在Windows命令提示符和Android设备上可用的有限shell上引起您的困难。

答案 1 :(得分: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历史记录,并且可以在脚本中使用它。

答案 2 :(得分:1)

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

注意:我正在使用win7和2.1模拟器。

答案 3 :(得分:0)

我有同样的问题,花了差不多一个小时,在这里张贴以便节省别人的时间,检查你是否给出了正确的文件名和扩展名,数据库文件夹下有两个文件myDB.db和myDB.db-journal和我跑的时候 “sqlite3 /data/data/com.my.package/databases/myDB”

.tables什么都没列出来,sqlite3创建了一个名为myDB的新数据库,它没有打开myDB.db