【问题标题】:How can you access the contents of Android Emulator databases?如何访问 Android Emulator 数据库的内容?
【发布时间】:2009-12-26 19:06:04
【问题描述】:

我已阅读有关如何访问数据库内容的问题的答案,但我似乎无法让它在我的机器上运行。这是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 上似乎没有太多连贯的文档!)

谢谢!

【问题讨论】:

  • "SQLite 只是简单地将我的命令回显给我,即使 Eclipse 文件浏览器告诉我它存在。如果我使用 sqlite3 工具并使用 ".tables",则接受命令。"这两句话似乎说的是完全相反的事情:它同时有效,也无效。你能澄清一下你在这里的意思吗?此外,如果您使用工具栏中的“代码示例”图标 (101 010) 格式化源代码和输出列表,它们会更容易阅读。
  • 我的意思是说,如果我运行上面的代码(在 Android shell 中)它会回显,但是如果我从 Windows 命令行运行 sqlite3 工具并创建一个数据库,所有命令都可以作为预期的。非常感谢:)

标签: android sqlite adb


【解决方案1】:

我可以告诉你,它在 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 存在问题,导致您遇到困难。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        【解决方案4】:

        我遇到了同样的问题,花了将近一个小时,在这里发帖这样可以节省别人的时间,检查你是否给出了正确的文件名和扩展名,数据库文件夹 myDB.db 下有两个文件和myDB.db-journal 和我运行时
        “sqlite3 /data/data/com.my.package/databases/myDB”

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2014-11-23
          • 2017-12-05
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-09-24
          • 2023-01-30
          相关资源
          最近更新 更多