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

在Android手机上开发时如何访问数据库?,android,sqlite,adb,Android,Sqlite,Adb,我在手机上开发时访问数据库时遇到问题。每当我执行 cd/data/data/com.mycopck/databases 然后运行lsI get:“opendir失败,权限被拒绝” 或者每当我键入sqlite3时,我就会得到:“sqlite3:权限被拒绝” 我做错了什么 是否有一些应用程序可以帮助我了解内容解析程序值和/或SQLite数据库?要回答问题的第一部分,请查看。基本上,您的手机需要具有root访问权限,并且您需要在root模式下运行adb(使用“adb root”) 至于第二部分,我使用

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

cd/data/data/com.mycopck/databases

然后运行
ls
I get:
“opendir失败,权限被拒绝”

或者每当我键入
sqlite3
时,我就会得到:
“sqlite3:权限被拒绝”

我做错了什么


是否有一些应用程序可以帮助我了解内容解析程序值和/或SQLite数据库?

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


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

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


再见

从以下线程检查我的答案:

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

因此,基本上,您需要进行调试构建(在从Android Studio启动应用程序时进行,除非您请求发布构建),并运行以下命令:

run-as com.mycompck
cd /data/data/com.mycompck/databases
ls
sqlite3 ./yourdatabase.db
但是请注意,默认情况下,许多手机上不存在
sqlite3
binary。因此,您可能需要将其下载到某个地方(例如,从SuperOneClick存档处),保存在SD卡上并使其可执行(尽管这有点棘手),例如:

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

查看和管理android应用程序数据库的最佳方法是使用此库

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

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

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


你可以在这里观看1分钟的演示:

我已经读了一点,访问你的移动数据库文件似乎很麻烦

看看这个。有了它,您可以在应用程序内部查看数据库

对我来说,这很有效。当然,这也取决于你们计划做什么


希望有帮助。

为什么我需要root访问权限,我想访问我的应用程序数据,因为我是开发人员,我很想访问它。adbd不能在生产构建中以root用户身份运行。在应用程序中添加导出或备份功能,将数据库复制到SD卡。@Pentium10:因为这就是它的工作方式,对数据目录的访问被锁定为非根访问。规则不是我定的P Commonware是正确的,但这是一个不错的解决办法。@Pentium10自2010年以来发生了一些变化:)请检查以下内容。不幸的是,我无法从Emulator数据库进行调试,因为Emulator没有我正在使用的应用程序(议程、蓝牙、Wifi)。但您可以将这些应用程序安装到Emulator:adb install appname.apk,我强烈建议您将手机设为root:),这样您就可以将sqlite3复制到应用程序的目录中,然后将权限更改为可执行文件。我猜这将意味着sqlite3的一个副本将一直保存在该目录中,直到该应用程序从手机上删除为止。因此,我的问题是:重新安装应用程序是否会删除可执行文件(例如,在Eclipse中单击“运行”)@stifle当您在Eclipse中单击“运行”时,您的应用程序数据库和共享首选项不会被删除,是吗?sqlite3可执行文件也是如此。只有
adb uninstall
(不带
-k
选项)将删除它(或通过设备应用程序管理器手动卸载应用程序)。我是否需要在Idea13CE(社区版)中执行任何操作以确保它正在进行调试生成?虽然此链接可以回答问题,最好在这里包括答案的基本部分,并提供链接供参考。如果链接页面发生更改,仅链接的答案可能无效。-说得好。但是,这仍然是管理移动数据库的好方法