# FlutterLoadDbFile
**Repository Path**: scenario-samples/flutter-load-db-file
## Basic Information
- **Project Name**: FlutterLoadDbFile
- **Description**: 读取数据库文件是HarmonyOS应用开发的典型场景之一,如读取本地通讯录或聊天记录数据。 本示例基于sqflite插件实现HarmonyOS应用加载Android已有SQLite数据库文件(.db文件),通过加载已经获取到的Android数据库文件,完成对现有数据库的读取和操作。
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2025-12-19
- **Last Updated**: 2025-12-19
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# Flutter读取本地工程db文件数据
## 介绍
读取数据库文件是HarmonyOS应用开发的典型场景之一,如读取本地通讯录或聊天记录数据。
本示例基于sqflite插件实现HarmonyOS应用加载Android已有SQLite数据库文件(.db文件),通过加载已经获取到的Android数据库文件,完成对现有数据库的读取和操作。
## 效果预览
## 实现思路
在HarmonyOS Flutter开发过程中,使用sqflite三方库打开已有数据库db文件创建连接时,数据库路径需要通过方法getDatabasesPath()获取,拼接上db文件名称后写入沙箱对应路径下,并将path传给openDataBase方法建立数据库连接,具体示例代码如下:
```Dart
Future _initDatabase() async {
// 修改处1
final databasesPath = await getDatabasesPath();
final path = join(databasesPath, 'example.db');
final dbExists = await databaseExists(path);
if (!dbExists) {
try {
// 修改处2
await Directory(dirname(path)).create(recursive: true);
final data = await rootBundle.load('assets/example.db');
final bytes = data.buffer.asUint8List(data.offsetInBytes, data.lengthInBytes);
await File(path).writeAsBytes(bytes, flush: true);
} catch (e) {
rethrow;
}
}
final db = await openDatabase(path);
return db;
}
```
## 约束与限制
* 本示例支持API Version 20 Release及以上版本。
* 本示例支持HarmonyOS 6.0.0 Release SDK及以上版本。
* 本示例需要使用DevEco Studio 6.0.0 Release及以上版本进行编译运行。
* Flutter版本推荐使用3.22及以上。
## 权限说明
不涉及
## 工程目录
```
assets
├──example.db // db文件
lib
├──main.dart // 主页面
```
## 模块依赖
```yaml
sqflite:
git:
url: "https://gitcode.com/openharmony-sig/flutter_sqflite"
path: "sqflite"
ref: "br_v2.3.3+1_ohos"
```
## 参考文档
[flutter_sqflite使用说明](https://gitcode.com/openharmony-sig/flutter_sqflite/blob/br_v2.3.3+1_ohos/README_OpenHarmony_CN.md)