Android:数据库文件存储在哪里?
Posted
技术标签:
【中文标题】Android:数据库文件存储在哪里?【英文标题】:Android: Where are database files stored? 【发布时间】:2010-11-09 11:10:25 【问题描述】:我在 android 设备上创建了一个 SQLite 数据库。该程序可以读取/写入数据库,因此显然已经创建了数据库文件。 SQLiteDatabase.mPath 设置为
db.mPath = "/data/data/dev.client.android/databases/clientDB.db"
但是当我浏览设备上的目录时,我找不到文件 clientDB.db。我查看了数据目录,但它似乎是空的。
有人知道这里出了什么问题吗?
【问题讨论】:
【参考方案1】:在 ContextWrapper (http://developer.android.com/reference/android/content/ContextWrapper.html) 上尝试 getDatabasePath。如果您在 Activity 或 Application 类中,请尝试:
File dbFile = getDatabasePath(MY_DB_NAME);
Log.i(dbFile.getAbsolutePath());
假设它在 /data/data/my.package.name/databases/
中是错误的,因为不能保证数据没有被移动到 SD 卡或设备/操作系统刚刚决定使用不同的数据目录。
【讨论】:
【参考方案2】:如果您的意思是您访问了/data
并没有在其中发现任何内容,并且您正在检查一个普通的 Android 硬件,这是意料之中的。 DDMS 无权浏览/data
。
但是,至少如果您的应用是在调试模式下编译的,您可以在控制台使用adb pull
命令直接下载您的文件。
【讨论】:
在我的设备文件管理器中我搜索了filename.sqlite
,但没有得到任何结果?你能说出原因吗?
@VivekWarde:您无法在生产设备上浏览内部存储。
那么我在哪里可以看到我的 sqlite 数据库而不是 assets 文件夹
@VivekWarde:最简单的解决方案是在模拟器上运行一些测试,您可以浏览/data
。【参考方案3】:
在调试模式下,您可以使用 adb shell 并浏览目录内容。在shell中你可以调用sqlite3 /data/data/dev.client.android/databases/clientDB.db来分析数据库。
【讨论】:
我尝试在调试应用程序时在 Android Studio 的终端选项卡中键入此命令,但它无法识别该命令。我计算机上的应用程序目录是控制台中的路径。这是我应该输入的地方吗?以上是关于Android:数据库文件存储在哪里?的主要内容,如果未能解决你的问题,请参考以下文章
在Android上,我在哪里存储将在卸载应用时自行删除的文件