# 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)