我已经阅读了关于如何访问数据库内容的问题的答案,但是我似乎无法让它在我的机器上运行。这是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上似乎没有太多连贯的文档!)
谢谢!
答案 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没有默认文件扩展名,因此如果您的数据库不是notes
但notes.db
或notes.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