Flutter中sqflite本地数据库存储位置及外部打开方法咨询
问题解答
一、数据库存储位置
代码里通过getDatabasesPath()获取数据库的基础路径,再用join拼接文件名app.db,最终存储路径分平台有所不同:
- Android:默认存在应用私有目录,路径大致为
/data/data/[你的应用包名]/databases/app.db,这个目录默认仅应用自身有权限访问。 - iOS/macOS:模拟器环境下,路径类似
/Users/[你的用户名]/Library/Developer/CoreSimulator/Devices/[设备ID]/data/Containers/Data/Application/[应用ID]/Documents/app.db;真机上则位于应用沙盒的Documents目录内,同样默认仅应用可访问。
二、在应用外部打开该数据库的方法
Android平台
- 调试阶段(模拟器/root设备)
- 打开Android Studio的Device File Explorer,定位到
data/data/[你的应用包名]/databases目录,右键点击app.db选择Save As,将文件导出到电脑本地。 - 用SQLite可视化工具(比如SQLiteStudio、DB Browser for SQLite)打开导出的文件即可。
- 打开Android Studio的Device File Explorer,定位到
- 非root真机(需修改代码)
- 可以在代码里添加逻辑,把数据库文件复制到公共存储目录(比如Download文件夹),示例代码如下:
Future<void> copyDbToPublicDir() async { final dbPath = await getDatabasesPath(); final sourcePath = join(dbPath, "app.db"); final targetPath = join(await getExternalStorageDirectory()?.path ?? "", "Download/app.db"); await File(sourcePath).copy(targetPath); } - 调用这个方法后,就能在手机的Download文件夹找到
app.db,再通过文件管理器复制到电脑,用SQLite工具打开。
- 可以在代码里添加逻辑,把数据库文件复制到公共存储目录(比如Download文件夹),示例代码如下:
iOS平台
- 模拟器环境
- 直接在Finder里找到前面提到的沙盒Documents目录,复制
app.db到本地,用SQLite可视化工具打开即可。 - 或者通过Xcode的「Devices and Simulators」面板,选中你的应用,点击
Download Container导出沙盒包,右键选择「显示包内容」,在Documents目录里找到app.db。
- 直接在Finder里找到前面提到的沙盒Documents目录,复制
- 真机环境
- 连接真机到电脑,打开Xcode的「Devices and Simulators」面板,选中对应应用点击
Download Container导出沙盒包,后续操作和模拟器一致,取出app.db文件到本地打开。
- 连接真机到电脑,打开Xcode的「Devices and Simulators」面板,选中对应应用点击
内容的提问来源于stack exchange,提问作者user23985254
相关产品推荐
相关产品推荐

