Android Studio查看SQLite数据库完全指南
一、先搞清楚:数据库到底藏在哪
知识点 1|SQLite 数据库就是一个普通文件
《数据库应用技术》里的 MySQL 有服务进程、有账号密码、要连端口。Android 的 SQLite 没有服务,整个数据库就是应用私有目录下的一个文件:
示例 1|推导秒哒快递的数据库完整路径
三个信息拼出来:
| 信息 | 来源 | 值 |
|---|---|---|
| 包名 | app/build.gradle 的 applicationId |
edu.cdp.android.day07 |
| 库名 | DbConstants.DB_NAME |
miaoda.db |
| 固定目录 | 系统约定 | /data/data/ |
所以本课工程的库文件完整路径是:
提示:不确定包名时,别翻代码猜,直接看运行结果——示例工程
MainActivity.runCheck()里有一行db.getPath(),会把真实路径打印到界面和 Logcat,以它为准。
补充:/data/data/<包名> 和 /data/user/0/<包名> 是同一个目录(多用户的 0 号用户就是机主),在 Device Explorer 里看到哪个都一样,别以为是两个文件。
知识点 2|为什么你”看不到”这个文件
/data/data/ 下每个应用目录的权限是 drwx------(只有应用自己和 root 能进)。所以:
-
真机(未 root):普通应用互相看不到,文件管理器也看不到; -
debug 包(Android Studio 直接运行的包):系统给调试器开了后门( run-as机制),Android Studio 的文件窗口因此能进 debug 包的目录; -
模拟器 / 已 root 设备:完全可见。
示例 2|用命令亲眼看一次权限
Android Studio 底部打开 Terminal(或命令行执行 adb shell):
典型输出(真机 debug 包):
u0_a152 就是这个应用的 Linux 用户,别的用户没有 r 权限——这就是”文件明明在,却打不开”的根本原因。
二、总览:四种查看方案怎么选
| 方案 | 工具 | 适用场景 | 优点 | 局限 |
|---|---|---|---|---|
| ① 导出文件 + SQLiteStudio | Device Explorer + SQLiteStudio | 课堂主线,离线细看、改数据 | 可留存、可离线、功能全 | 要手动导出,注意 WAL(见知识点 5) |
| ② Database Inspector | Android Studio 自带 | 快速确认”数据写进去没” | 零导出、实时刷新、可直接改 | 设备需 API 26+,只对运行中的进程 |
| ③ adb 命令行 | run-as + adb pull |
真机无 root、想写成一键脚本 | 可脚本化、最可靠 | 要会命令行,Windows 有换行符坑 |
| ④ 应用内导出 | 自己写 Java 工具类 | 兜底方案,答辩演示原理 | 不依赖任何工具 | 要加代码 |
课堂建议:先用方案②确认数据,再用方案①把文件导出来看结构,方案③④作为拓展。
三、方案一:Device Explorer 导出 + SQLiteStudio 查看(主线)
3.1 工具准备:安装 SQLiteStudio
SQLiteStudio 是免费开源的 SQLite 图形化管理工具,绿色免安装,解压即用。
-
官网:https://sqlitestudio.pl/ -
GitHub 发布页(推荐,版本最全):https://github.com/pawelsalawa/sqlitestudio/releases -
Windows 选 Portable(便携版): sqlitestudio-<版本号>-windows-x64.zip
示例 3|三步装好 SQLiteStudio(Windows)
-
下载 sqlitestudio-3.4.x-windows-x64.zip; -
解压到任意目录,如 D:\Tools\SQLiteStudio; -
双击 SQLiteStudio.exe运行,无需安装。
⚠️ 安全提示:课件原始链接来自第三方网盘打包(gitcode 仓库的 zip),优先从官网或 GitHub 下载;如果用第三方包,装完先杀毒扫描再打开。工具本身开源免费,没必要冒险。
中文化:菜单 Tools → Preferences(配置)→ Environment → Language 选择”简体中文”,重启生效。首次若报缺少 DLL,说明下到了最小化版本,换完整便携版即可。
3.2 第一步:确认数据库文件已经生成
知识点 3|SQLiteOpenHelper 是懒加载,不建库就导不出文件
这是本节最大的坑:new ExpressOpenHelper(this) 只是创建了帮助类对象,数据库文件此时还不存在。只有调用
之后,系统才会在 databases/ 目录下真正创建 miaoda.db 并回调 onCreate() 建表。
示例 4|确认文件已生成
方法 A:运行示例工程 Day07Express,自检页会显示”数据库:miaoda.db 版本:1″和表列表;
方法 B:Device Explorer 里看 databases/ 目录下有没有 miaoda.db;
方法 C:命令行确认:
输出 miaoda.db 就说明可以导出了。如果目录是空的——先去 App 里点一次”重新检测”。
3.3 第二步:Device Explorer 导出
操作路径:菜单 View → Tool Windows → Device Explorer(旧版本叫 Device File Explorer,也可以直接点 Android Studio 左侧边栏的文件图标)。
然后在文件树里逐层展开:data → data → edu.cdp.android.day07 → databases,找到 miaoda.db,右键 → Save As…(Ctrl+Shift+S) 保存到电脑本地,例如 D:\db-backup\。
3.4 第三步:SQLiteStudio 打开与查看
示例 7|添加数据库(图文)
菜单 数据库(Database)→ 添加数据库(Add a database),弹出如下对话框:
-
数据类型:选 SQLite 3; -
文件:点文件夹图标,选中刚才导出的 miaoda.db; -
点 测试连接,提示成功后点 OK。
打开后左侧出现数据库树:miaoda → Tables(3),能看到 android_metadata(系统表)、tb_order、tb_user。双击 tb_user,上方有四个页签:
| 页签 | 内容 |
|---|---|
| 结构 | 列名、类型、约束(对照第 7 日讲义的表结构检查) |
| 数据 | 表格化浏览,可直接双击单元格改数据 |
| 约束 / Indexes / 触发器 | 主键、唯一约束等 |
| DDL | 建表 SQL 原文(和你 DbConstants 里写的对照) |
示例 8|用 SQL 验证数据(把第 7 日的 SQL 用起来)
点击工具栏的”SQL 编辑器”(打开 SQL 编辑区),执行:
执行方式:选中语句后点击工具栏的 ▶ 执行按钮(或按 F9),结果在下方网格显示。
修改数据直接在”数据”页签双击单元格即可;注意保持 App 处于关闭状态再改,否则可能出现
database is locked。
四、方案二:Database Inspector(Android Studio 自带,零导出)
知识点 5|它是”连着运行中的 App”实时查看
Android Studio 4.1 起内置 Database Inspector(新版本在 App Inspection 窗口里),直接连上正在运行的进程查数据库,不用导出任何文件。
前提条件(缺一不可):
-
应用运行在 API 26+(Android 8.0) 的模拟器或真机上; -
是 debug 包(Android Studio 直接 Run 出来的就是); -
应用进程正在运行。
注意:本课工程 minSdk 14 不冲突—— Inspector 看的是设备系统版本,不是 minSdk。把工程跑到 API 26+ 的模拟器上即可。
示例 9|四步打开并查询
-
运行 App; -
菜单 View → Tool Windows → App Inspection,选 Database Inspector 标签页; -
顶部下拉框选中 edu.cdp.android.day07进程; -
左侧 Databases 面板展开 miaoda,双击tb_user查看数据;点 Open New Query tab 可执行自定义 SQL。
常用技巧:
| 开关 | 作用 | 什么时候用 |
|---|---|---|
| Live updates | App 一写库,表格自动刷新(开启后表格变只读) | 调注册/登录流程,边点边看 |
| Keep database connections open | 阻止 Inspector 关闭数据库连接 | App 频繁开关连接导致左侧列表”数据库忽隐忽现”时 |
| 离线模式(4.2+) | 进程断开后仍可浏览刚下载的快照,标题带 [DETACHED] |
App 崩溃后继续查案发现场(只读,不能改) |
示例 10|在 Inspector 里直接改数据
双击 tb_user 数据网格里的某个单元格 → 输入新值 → 回车,改动立即写进设备上的数据库。切回 App 点”重新检测”,行数与内容同步变化——这是向学生证明”数据库真的在本机”最直观的演示。
示例 11|从 Inspector 直接导出文件
在 Databases 面板右键数据库或表 → Export to file,支持三种格式:
| 格式 | 用途 |
|---|---|
DB |
标准数据库文件,可再用 SQLiteStudio 打开 |
SQL |
建表 + 插入语句的脚本,可跨库重建 |
CSV |
表格数据,可拖进 Excel 做答辩附件 |
五、方案三:adb 命令行导出(真机无 root、可脚本化)
知识点 6|run-as 是 debug 包的后门
run-as <包名> 能让 shell 以该应用的 Linux 用户身份执行命令,只对 debuggable 的包有效(Android Studio Run 出来的 debug 包自动满足)。用它绕过知识点 2 里说的目录权限。
示例 12|最短可用的导出命令(重点看 exec-out)
⚠️ Windows 专属大坑:必须用
adb exec-out,不要用adb shell!
adb shell ... > 文件会把输出里的换行符\n自动替换成 Windows 的\r\n,二进制文件被加进\r后直接损坏,SQLiteStudio 打开报file is not a database。exec-out输出原始字节流,不做任何转换。
示例 13|更稳的做法:经 /data/local/tmp 中转再 pull
把这两行存成 export-db.bat 放进工程目录,以后双击就导出,答辩演示前特别好用。
转载请注明来源:Android Studio查看SQLite数据库完全指南












