
阅读时长:约 18 分钟 | 难度:★★★★☆ | 篇章:第 9 篇 · 取名乐律地理 AI 助手 对应源码:entry/src/main/ets/pages/assistant/AiAssistantPage.ets
前言
AI 对话历史是玄象项目 AI 助手功能的"记忆"组件。通过 @ohos.data.relationalStore 关系型数据库,将用户与 AI 助手的对话记录持久化到本地,下次打开应用时自动恢复历史对话。本篇将深入剖析玄象项目对话历史持久化的实现:从 relationalStore 数据库创建、CREATE TABLE 建表语句、INSERT 插入消息、SELECT 查询历史,到 @State messages 数据绑定。掌握这套数据持久化实现方法论,您就能为任何 HarmonyOS 应用添加本地数据存储功能。
提示:@ohos.data.relationalStore 是 HarmonyOS 官方提供的关系型数据库,类似 SQLite。
一、数据库创建
1.1 建表
import { relationalStore } from '@ohos.data.relationalStore';
private async initDatabase(): Promise<void> {
const store = await relationalStore.getRdbStore(this.context, {
name: 'ai_assistant.db',
securityLevel: relationalStore.SecurityLevel.S1
});
await store.executeSql(`
CREATE TABLE IF NOT EXISTS messages (
id INTEGER PRIMARY KEY AUTOINCREMENT,
role TEXT NOT NULL,
content TEXT NOT NULL,
time TEXT NOT NULL
)
`);
this.store = store;
}
二、消息持久化
2.1 插入消息
private async saveMessage(msg: ChatMessage): Promise<void> {
const valueBucket = {
'role': msg.role,
'content': msg.content,
'time': msg.time
};
await this.store.insert('messages', valueBucket);
}
三、数据持久化设计总结
3.1 数据流
用户发送消息
↓
@State messages 更新(UI 即时显示)
↓
saveMessage() 异步写入数据库
↓
下次打开应用
↓
loadMessages() 从数据库加载历史
↓
@State messages 恢复
四、第 9 篇章总结
第 9 篇章"取名乐律地理 AI 助手"共 10 篇,全面覆盖了玄象项目相关模块的实现:
| 81 | AI 取名表单 | TextInput + Toggle + Chip |
| 82 | 取名结果页 | Canvas 评分圆环 |
| 83 | 十二律吕 | AudioPlayer 音频播放 |
| 84 | 九州地理 | Canvas 分州着色 |
| 85 | AI 助手对话 UI | 聊天气泡 + 快速问答 |
| 86 | 网络请求封装 | async/await + try-catch |
| 87 | 音频资源加载 | rawfile + AudioPlayer |
| 88 | 地图触摸高亮 | onTouch + 距离检测 |
| 89 | Markdown 渲染 | 富文本展示 |
| 90 | 对话历史持久化 | relationalStore |
总结
本篇以玄象项目 AI 对话历史持久化为蓝本,深入剖析了 ArkUI 关系型数据库的实现:从 relationalStore 数据库创建、CREATE TABLE 建表语句、INSERT 插入消息、SELECT 查询历史,到 @State messages 数据绑定。掌握这套数据持久化实现方法论,您就能为任何 HarmonyOS 应用添加本地数据存储功能。
如果这篇文章对你有帮助,欢迎点赞👍、收藏⭐、关注🔔,你的支持是我持续创作的动力!
相关资源:
- HarmonyOS 官方文档:relationalStore
- 开源鸿蒙跨平台社区:https://openharmonycrossplatform.csdn.net
网硕互联帮助中心






评论前必须登录!
注册