我在手机上开发时无法访问数据库。每当我执行如何在Android手机上开发时访问数据库?
cd /data/data/com.mycompck/databases
,然后运行ls
我得到:"opendir failed, Permission denied"
或者每当我sqlite3
型我得到:"sqlite3: permission denied"
我在做什么错?
是否有一些应用程序可以帮助我获得内容解析器值和/或SQLite数据库的人性化视图?
我在手机上开发时无法访问数据库。每当我执行如何在Android手机上开发时访问数据库?
cd /data/data/com.mycompck/databases
,然后运行ls
我得到:"opendir failed, Permission denied"
或者每当我sqlite3
型我得到:"sqlite3: permission denied"
我在做什么错?
是否有一些应用程序可以帮助我获得内容解析器值和/或SQLite数据库的人性化视图?
要回答您的问题的第一部分,请查看this answer。基本上,您的手机需要具有root用户访问权限,并且您需要以root用户模式运行adb(使用“adb root”)。
至于第二部分,我使用SQLite Database Browser来查看我的SQLite dbs(尽管只有当数据库在我的电脑上;不知道任何设备上的浏览器)。我不知道有什么方法可以获得内容解析器的人性化视图。
您必须是root才能访问任何数据库文件。所以,你可以在你的手机上找到root(在Google上查找信息),或者从模拟器中调试数据库(总是给你root权限)。
再见!
检查从以下螺纹我的回答:Why do I get access denied to data folder when using adb?
从API级别8(安卓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
所以,重新将sqlite3复制到应用程序的目录,然后将权限更改为可执行文件。我猜这将意味着一个sqlite3的副本将存在于该目录中,直到该应用程序被删除掉。所以我的问题是:重新安装应用程序是否删除可执行文件(例如,在Eclipse中单击RUN)? – styfle 2011-12-08 19:37:20
@styfle在Eclipse中单击“运行”时,您的应用程序数据库和共享首选项不会被删除,是吗?所以做sqlite3可执行文件。只有'adb uninstall'(不带'-k'选项)将删除它(或通过设备应用程序管理器手动卸载应用程序)。 – Idolon 2011-12-09 18:15:32
我是否需要在Idea13CE(社区版)中做任何事情来确保它正在进行调试构建? – Rupert 2013-10-01 04:55:07
的最佳方式查看和管理你的android应用程序数据库就是使用这个库https://github.com/sanathp/DatabaseManager_For_Android
它是一个单一的java活动文件,只需将java文件添加到你的源文件夹,你可以查看你的应用程序数据库中的表,更新,删除,插入行给你桌子。从你的应用程序的一切。
开发完成后,从src文件夹中删除java文件即可。
它帮助了我很多,希望它也能帮助你。
您可以查看1分钟的演示在这里:http://youtu.be/P5vpaGoBlBY
我对这个一点阅读并访问你的数据库文件移动显得相当麻烦的。
看看这个。有了这个,你可以在你的应用程序中查看你的数据库。 Database Manager
对我来说这工作得很好。这种情况也取决于你打算做什么。
希望它有帮助。
虽然这个链接可能回答这个问题,但最好在这里包含答案的基本部分,并提供参考链接。如果链接页面更改,则仅链接答案可能会失效。 - [来自评论](/ review/low-quality-posts/16161779) – 2017-05-18 11:08:00
好点。但它仍然是管理移动数据库的好方法 – Feddex 2017-05-18 11:50:07
为什么我需要root访问权限,我想访问我的应用程序数据,因为我是开发人员,我希望能够访问它。 – Pentium10 2010-05-11 14:44:59
adbd无法在生产版本中作为root运行 – Pentium10 2010-05-11 14:46:38
向您的应用添加一个导出或备份功能,将数据库复制到SD卡。 – CommonsWare 2010-05-11 15:26:30