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

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

问题描述:

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

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

“SQLite的只是回声我的命令回到我的身边,甚至尽管Eclipse的文件浏览器告诉我它的存在。如果我使用sqlite3的工具,并使用” .tables”的命令是ACC epted“。这两句话似乎表达了完全相反的事情:它同时起作用并且不起作用。你能否澄清你的意思?另外,如果您使用工具栏中的“代码示例”图标(101 010)对源代码和输出列表进行格式化,它们对我们而言会更容易阅读。 – CommonsWare 2009-12-26 19:44:21

+0

我的意思是说,如果我运行上面的代码(在Android外壳)它回显在,但是,如果我从Windows命令行工具sqlite3的,并创建一个数据库,所有命令都按预期工作。 非常感谢:) – Jumbo 2009-12-26 20:00:56

我可以告诉你,它工作正常,我在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.dbnotes.sqlite什么的,你需要指定扩展名。此外,我还没有在Windows上尝试过这种方式,并且可能存在Windows命令提示符以及Android设备上可用的有限shell导致难度的问题。

如果你想发出命令行使用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历史,你可以在脚本中使用此。

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

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

我有同样的问题,花了将近一个小时,在这里张贴,这样可以节省别人的时间,请检查您是否具有扩展名一起被给予的正确的文件名,有数据库文件夹下myDB.db两个文件和myDB.db期刊,当我跑
“sqlite3的/data/data/com.my.package/databases/myDB”

.tables
上市没什么,sqlite3的创造了一个新的数据库名为MYDB,它没有打开myDB.db