安卓:数据库文件存储在哪里?

45

我在Android设备上创建了一个SQLite数据库。程序可以读写数据库,因此数据库文件显然已经被创建。SQLiteDatabase.mPath被设置为

db.mPath = "/data/data/dev.client.android/databases/clientDB.db"

但是当我浏览设备上的目录时,无法找到文件clientDB.db。我查看了数据目录,但它似乎是空的。

有人知道这里可能出了什么问题吗?

3个回答

34

如果您在Activity或Application类中,可以尝试在ContextWrapper上使用getDatabasePath方法(http://developer.android.com/reference/android/content/ContextWrapper.html):

File dbFile = getDatabasePath(MY_DB_NAME);
Log.i(dbFile.getAbsolutePath());

仅仅假定数据文件在/data/data/my.package.name/databases/路径下是不可靠的,因为无法保证数据文件没有被移动到SD卡上,或者设备/操作系统已经选择了不同的数据文件夹。


28
如果你访问了/data ,但在里面没找到任何内容,并且你是检查一个普通的Android硬件,那是正常的。DDMS没有权限浏览/data文件夹。
然而,至少如果你的应用程序以调试模式编译,你可以使用控制台上的adb pull命令直接下载你的文件。

在我的设备文件管理器中,我搜索了 filename.sqlite 但是没有结果?你能告诉我为什么吗? - Vivek Warde
@VivekWarde:在生产设备上,您无法浏览内部存储。 - CommonsWare
除了资产文件夹之外,我在哪里可以查看我的 SQLite 数据库? - Vivek Warde
2
@VivekWarde:最简单的解决方案是在模拟器上运行一些测试,这样你就可以浏览/data了。 - CommonsWare

6

在调试模式下,您可以使用 adb shell 并浏览目录内容。 在 shell 中,可以调用 sqlite3 /data/data/dev.client.android/databases/clientDB.db 来分析数据库。


我尝试在 Android Studio 的终端选项卡中输入此命令,同时应用程序正在进行调试,但它无法识别该命令。我的计算机上应用程序的目录是控制台中的路径。这是我应该输入它的地方吗? - Jpaji Rajnish

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接