2010-05-11 109 views
9

我在手机上开发时无法访问数据库。每当我执行如何在Android手机上开发时访问数据库?

cd /data/data/com.mycompck/databases

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

或者每当我sqlite3型我得到:"sqlite3: permission denied"

我在做什么错?

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

回答

1

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

至于第二部分,我使用SQLite Database Browser来查看我的SQLite dbs(尽管只有当数据库在我的电脑上;不知道任何设备上的浏览器)。我不知道有什么方法可以获得内容解析器的人性化视图。

+0

为什么我需要root访问权限,我想访问我的应用程序数据,因为我是开发人员,我希望能够访问它。 – Pentium10 2010-05-11 14:44:59

+0

adbd无法在生产版本中作为root运行 – Pentium10 2010-05-11 14:46:38

+4

向您的应用添加一个导出或备份功能,将数据库复制到SD卡。 – CommonsWare 2010-05-11 15:26:30

0

您必须是root才能访问任何数据库文件。所以,你可以在你的手机上找到root(在Google上查找信息),或者从模拟器中调试数据库(总是给你root权限)。

再见!

+0

不幸的是,我不能从模拟器调试数据库,因为模拟器没有我正在使用的应用程序(议程,蓝牙,Wifi)。 – Pentium10 2010-05-11 14:49:38

+0

但是你可以安装这些应用程序到模拟器:adb install appname.apk无论如何,我强烈建议根你的手机:) http://www.google.com.co/search?q=root+android – Cristian 2010-05-11 15:20:19

16

检查从以下螺纹我的回答: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 
+0

所以,重新将sqlite3复制到应用程序的目录,然后将权限更改为可执行文件。我猜这将意味着一个sqlite3的副本将存在于该目录中,直到该应用程序被删除掉。所以我的问题是:重新安装应用程序是否删除可执行文件(例如,在Eclipse中单击RUN)? – styfle 2011-12-08 19:37:20

+1

@styfle在Eclipse中单击“运行”时,您的应用程序数据库和共享首选项不会被删除,是吗?所以做sqlite3可执行文件。只有'adb uninstall'(不带'-k'选项)将删除它(或通过设备应用程序管理器手动卸载应用程序)。 – Idolon 2011-12-09 18:15:32

+0

我是否需要在Idea13CE(社区版)中做任何事情来确保它正在进行调试构建? – Rupert 2013-10-01 04:55:07

0

的最佳方式查看和管理你的android应用程序数据库就是使用这个库https://github.com/sanathp/DatabaseManager_For_Android

它是一个单一的java活动文件,只需将java文件添加到你的源文件夹,你可以查看你的应用程序数据库中的表,更新,删除,插入行给你桌子。从你的应用程序的一切。

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

它帮助了我很多,希望它也能帮助你。

您可以查看1分钟的演示在这里:http://youtu.be/P5vpaGoBlBY

-1

我对这个一点阅读并访问你的数据库文件移动显得相当麻烦的。

看看这个。有了这个,你可以在你的应用程序中查看你的数据库。 Database Manager

对我来说这工作得很好。这种情况也取决于你打算做什么。

希望它有帮助。

+0

虽然这个链接可能回答这个问题,但最好在这里包含答案的基本部分,并提供参考链接。如果链接页面更改,则仅链接答案可能会失效。 - [来自评论](/ review/low-quality-posts/16161779) – 2017-05-18 11:08:00

+0

好点。但它仍然是管理移动数据库的好方法 – Feddex 2017-05-18 11:50:07

相关问题