在Android手机上开发时如何访问数据库?

时间:2010-05-11 14:39:14

标签: android sqlite adb

我在手机上开发时遇到了访问数据库的问题。每当我执行

cd /data/data/com.mycompck/databases

然后运行ls我得到:"opendir failed, Permission denied"

或者当我输入sqlite3时,我得到:"sqlite3: permission denied"

我做错了什么?

是否有一些应用程序可以帮助我获取内容解析器值和/或SQLite数据库的人工视图?

5 个答案:

答案 0 :(得分:16)

从以下帖子中查看我的答案:Why do I get access denied to data folder when using adb?

  

从API级别8(Android 2.2)开始,如果将应用程序构建为可调试的,则可以使用shell run-as命令将命令或可执行文件作为   特定用户/应用程序或只需切换到您的UID   应用程序,以便您可以访问其data目录。

所以基本上你需要进行调试构建(每当你从Android Studio启动应用程序时都是automatically,除非你请求发布版本)并运行以下命令:

run-as com.mycompck
cd /data/data/com.mycompck/databases
ls
sqlite3 ./yourdatabase.db

但请注意,许多手机默认不存在sqlite3二进制文件。因此,您可能需要在某处下载它(例如,从http://shortfuse.org/的SuperOneClick存档),保存在SD卡上并使其可执行(虽然这有点棘手),例如:

run-as com.mycompck
cd /data/data/com.mycompck/
cat /sdcard/sqlite3 >./sqlite3
chmod 744 ./sqlite3
./sqlite3 ./databases/yourdatabase.db

答案 1 :(得分:1)

要回答问题的第一部分,请查看this answer。基本上,您的手机需要具有root访问权限,并且您需要以root模式运行adb(使用“adb root”)。

至于第二部分,我使用SQLite Database Browser来查看我的SQLite dbs(尽管只有当db在我的计算机上时才会这样;不知道任何设备上的浏览器)。我不知道如何获得内容解析器的人工视图。

答案 2 :(得分:0)

您必须是root用户才能访问任何数据库文件。因此,您可以在手机上获取root权限(在Google上查找信息)或仅从模拟器调试数据库(始终为您提供root访问权限)。

再见!

答案 3 :(得分:0)

查看和管理Android应用数据库的最佳方法是使用此库https://github.com/sanathp/DatabaseManager_For_Android

它是一个单独的java活动文件,只需将java文件添加到源文件夹即可查看应用数据库中的表,更新,删除,向表中插入行。从应用程序中获取所有内容。

开发完成后,从你的src文件夹中删除java文件。

它给了我很多帮助。希望它也可以帮到你。

您可以在此处查看1分钟演示:http://youtu.be/P5vpaGoBlBY

答案 4 :(得分:-1)

我已经对此进行了一些阅读,并且访问移动数据库文件似乎非常麻烦。

看看这个。使用它,您可以在应用程序内查看数据库。 Database Manager

对我来说这很好。这有点取决于你计划做什么。

希望它有所帮助。