如何使用ADB从Android设备中提取sqlite数据库?

时间:2015-04-08 18:10:36

标签: android database sqlite adb extraction

我按照How do I view the SQLite database on an Android device?

的答案中给出的分步说明进行操作
  

1)连接您的设备并以调试模式启动应用程序。

     

2)将数据库文件从您的应用程序文件夹复制到您的SD   卡。您可能希望使用adb -d shell“run-as com.resmed.mon ls   /data/data/com.resmed.mon/databases/“看看数据库是什么   文件名是。

     

3)adb -d shell“run-as com.yourpackge.name cat   /data/data/com.yourpackge.name/databases/filename.sqlite>   /sdcard/filename.sqlite“

(在我的案例中为“/data/data/com.mypackge.name/databases/MyDb”)

  

4)将数据库文件拉到您的机器上:

     

5)adb pull /sdcard/filename.sqlite。

     

6)安装Firefox SQLLite Manager:   https://addons.mozilla.org/en-US/firefox/addon/sqlite-manager/

     

7)打开Firefox SQLLite Manager(Tools-> SQLite Manager)并打开你的   上面第3步的数据库文件。“

但就我而言,提取的数据库始终为空。当我在SQL Lite Manager上打开文件时,我找不到我的表和我的数据。我不明白为什么。我可以在调试模式下使用我的应用程序在设备屏幕上看到数据。是否有其他文件夹可以存储我的数据库? 我的手机没有扎根。

感谢您的帮助。

PS:我想对之前的答案发表评论,但我的声誉太低,无法与答案互动。

2 个答案:

答案 0 :(得分:2)

我发布了一个用于转储数据库的简单shell脚本:

  

https://github.com/Pixplicity/dbdump

它执行两种不同的方法:

  1. 首先,它尝试让其他用户可以访问该文件,并尝试从设备中提取该文件。
  2. 如果失败,它会通过终端将文件内容流式传输到本地计算机。它执行了一个额外的技巧来删除某些设备输出到shell的\r个字符。
  3. 从这里,您可以使用各种CLI或GUI SQLite应用程序(例如sqlite3sqlitebrowser)来浏览数据库的内容。

答案 1 :(得分:-1)

据我记忆,您不应该从非root设备中提取数据库。但是你可以从模拟器中获取它!