HarmonyOS鸿蒙Next中sqlite3的2.9.4版本是否有适配版本
HarmonyOS鸿蒙Next中sqlite3的2.9.4版本是否有适配版本 想要使用sqlite3的2.6.0版本新增功能:添加 jsonb 一个 Dart Codec 转换函数,用于将 Dart 对象与 SQLite JSONB 值相互转换。同时希望升级2.x版本,因此想要使用2.9.4版本。2.x的2.9.4版本链接:https://pub.dev/packages/sqlite3/versions/2.9.4。这个库是否有HarmonyOS的版本。目前未查询到。
系统用的sqlite都是3.X多版本了啊!
详见开发文档:
SQLite调试工具指导
SQLite是一款轻量级、嵌入式、无服务器的关系型数据库管理系统,其核心优势在于将整个数据库存储于单一文件中,无需独立服务器进程,支持跨平台运行,被广泛应用于移动应用、嵌入式设备和桌面软件等场景。
本调试工具基于hdc命令实现对SQLite数据库的操作,提供一种通过命令行接口高效管理SQLite数据库的方式,适用于开发、调试和运维阶段对数据库的快速操作与验证。
更多关于HarmonyOS鸿蒙Next中sqlite3的2.9.4版本是否有适配版本的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
这个版本不支持吧
当前SQLite版本号:“3.40.1”,SQLite的版本是HarmonyOS系统内置好的,有封装好的RDB接口,不能随意引用最新版本。
虽然系统内置SQLite,但推荐使用更高层级的RDB接口进行封装操作,@ohos.data.relationalStore基于SQLite组件提供了一套完整的对本地数据库进行管理的机制,对外提供了一系列的增、删、改、查等接口,也可以直接运行用户输入的SQL语句来满足复杂的场景需要。
你好,可以看其他开源库 sqlite3-ohos.dart,这是 sqlite.dart 的分支版本之一,基于 鸿蒙突击队 / Flutter 3.22.0 对 HarmonyOS 进行了适配,并补充了中文文档说明。 ,集成了 SQLite 相关的 Dart/Flutter 包,这些包通过 dart:ffi 实现了在 Dart 中使用 SQLite 的功能。

希望HarmonyOS能继续推出更多实用的功能,满足用户的不同需求。
结论先说:目前不建议把 pub.dev 上的 sqlite3 2.9.4 当成“已经适配 HarmonyOS”的库直接接入。2.9.4 页面显示的平台是 Android、iOS、Linux、macOS、Web、Windows;sqlite3 包的说明里预编译 SQLite 也主要覆盖这些平台,没有列出 HarmonyOS。这个包的 native 路线本质是 dart:ffi 加底层 sqlite3 动态库,所以如果是 Flutter 鸿蒙工程,需要自己验证/移植 OHOS ABI 下的 libsqlite3.so 与 ffi 加载链路。
如果只是 HarmonyOS 原生应用里做本地数据库,建议优先用 ArkData 的 relationalStore。它底层基于 SQLite,官方提供 getRdbStore、execute/querySql、insert/update/delete 等接口,维护成本会比硬移植 Dart sqlite3 低很多。JSONB 这块也要注意:sqlite3.dart 的 jsonb 是 Dart 包侧能力,不能直接等同于系统 relationalStore 一定支持同样的 JSONB 函数,最好在真机上用 SELECT jsonb(…) 这类 SQL 做一次能力探测。
import { relationalStore } from '@kit.ArkData';
const config: relationalStore.StoreConfig = {
name: 'app.db',
securityLevel: relationalStore.SecurityLevel.S3
};
const store = await relationalStore.getRdbStore(getContext(this), config);
await store.execute('CREATE TABLE IF NOT EXISTS item(id INTEGER PRIMARY KEY AUTOINCREMENT, body TEXT)');
await store.execute('INSERT INTO item(body) VALUES(?)', [JSON.stringify({ name: 'demo' })]);
let rs = await store.querySql('SELECT body FROM item WHERE id = ?', [1]);
try {
if (rs.goToNextRow()) {
const data = JSON.parse(rs.getString(rs.getColumnIndex('body')));
console.info(JSON.stringify(data));
}
} finally {
rs.close();
}
我的判断路径是:先看 pub.dev 的平台声明和 sqlite3 README,再决定是否走移植;若业务只是结构化存储,就走 HarmonyOS 官方 relationalStore。参考:pub.dev sqlite3 2.9.4:https://pub.dev/packages/sqlite3/versions/2.9.4,sqlite3 支持平台说明:https://pub.dev/packages/sqlite3,HarmonyOS relationalStore 文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-references/arkts-apis-data-relationalstore,持久化指南:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/data-persistence-by-rdb-store
目前没有看到 sqlite3 2.9.4 官方声明支持 HarmonyOS 的版本。 pub.dev 上 2.9.4 的平台支持列表,仅标注了 Android、iOS、Linux、macOS、Windows 和 Web,并未包含 HarmonyOS。
另外 sqlite3 这个库本质上是基于 dart:ffi 调用底层 SQLite 动态库工作的。Android、iOS 等平台都有对应的动态库支持,而 HarmonyOS 是否可用,取决于:
- Flutter HarmonyOS 适配层是否支持 FFI;
- 是否存在可加载的 sqlite3 动态库(.so);
- sqlite3_flutter_libs 是否提供 HarmonyOS 构建产物。
从目前公开资料来看,sqlite3_flutter_libs 并没有提供 HarmonyOS 平台支持说明。
你提到的 JSONB Codec 功能实际上是 sqlite3 2.6.0 之后增加的功能,属于 Dart 层能力,并不是 HarmonyOS 特有适配。
所以目前的结论应该是:
- sqlite3 2.9.4 有 Dart/Flutter 版本;
- 没有官方 HarmonyOS 版本说明;
- 能否运行取决于 Flutter HarmonyOS 对 FFI 和 sqlite3 动态库的支持情况;
- 如果项目是 Flutter for HarmonyOS,建议实际编译验证一下
sqlite3和sqlite3_flutter_libs是否能成功加载动态库,否则大概率需要自行适配 Native Library。
如果是纯 HarmonyOS NEXT(ArkTS)项目,更建议直接使用系统提供的 RDB/RelationalStore,而不是引入 Flutter sqlite3 生态。
现在HarmonyOS 系统内置的 SQLite 版本为 3.40.1哦,并提供了封装好的 RDB 接口。虽然系统内置了 SQLite,但通常推荐使用更高层级的接口进行操作。如果你在 Flutter 中使用 sqlite3 包,它可能会通过 FFI 调用系统 SQLite 库,这个时候你需要确保其功能与系统内置版本兼容
关注,
目前库内没有HarmonyOS版本,
HarmonyOS NEXT 未提供 sqlite3 2.9.4 的官方适配版本。系统内置 SQLite 为 3.x 系列,不兼容该版本号。
目前 sqlite3 这个 Dart 包(含 2.9.4)没有针对 HarmonyOS Next 的适配版本。
该库依赖 dart:ffi 加载原生 SQLite 动态库,而 HarmonyOS Next 不支持直接运行 Dart FFI,且 Flutter for HarmonyOS 的生态与 FFI 兼容性仍不成熟,因此无法直接在鸿蒙纯血设备上使用。即使通过社区版 Flutter 引擎运行,目前也没有已发布的鸿蒙适配 pub 版本。如需操作数据库,应优先使用系统内置的关系型数据库(RDB)或基于 NAPI 自行封装。


