尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
HarmonyOS7 数据持久化 relationalStore:数据库实战
文章目录前言第一步建库第二步建表代码实现第三步增插入核心代码第四步查查询第五步改和删常见误区小白必踩完整可运行示例relationalStore 建表与增查完整示例写在最后前言有些数据不能丢用户的笔记、离线缓存的订单、本地的聊天记录。这些得存进本地数据库关掉 app 再打开还在。HarmonyOS 提供了relationalStore关系型数据库底层就是 SQLite。这篇文章我用一个待办事项的小例子把建库、建表、增删改查完整走一遍。跟着敲你就能上手本地数据库。第一步建库import{relationalStore}fromkit.ArkDataimport{BusinessError}fromkit.BasicServicesKitletdb:relationalStore.RdbStoreasyncfunctioninitDB(){constcfg:relationalStore.StoreConfig{name:todo.db,// 数据库文件名securityLevel:relationalStore.SecurityLevel.S1}dbawaitrelationalStore.getRdbStore(getContext(),cfg)}讲解getRdbStore是异步的拿到一个RdbStore实例就是你的数据库连接。securityLevel是安全等级普通本地数据用S1足够涉及隐私的用更高等级。记得await建库是耗时的。第二步建表表结构用 SQL 语句定义。建议在initDB之后执行一次建表代码实现awaitdb.executeSql(CREATE TABLE IF NOT EXISTS todo ( id INTEGER PRIMARY KEY AUTOINCREMENT, title TEXT NOT NULL, done INTEGER DEFAULT 0, createTime TEXT ))IF NOT EXISTS保证重复调用不会报错app 第二次启动表已存在。done INTEGERSQLite 没有布尔用 0/1 表示未完成/完成。字段类型TEXT/INTEGER是标准 SQL写过别的数据库的一看就懂。第三步增插入用ValuesBucket装一行数据再insert核心代码import{ValuesBucket}fromkit.ArkDataasyncfunctionaddTodo(title:string){constvalue:ValuesBucket{title:title,done:0,createTime:newDate().toISOString()}awaitdb.insert(todo,value)}ValuesBucket本质是个键值对对象键对应表里字段名。插入后自增id自动生成。第四步查查询asyncfunctiongetAll():PromiseTodo[]{constpredicatesnewrelationalStore.RdbPredicates(todo)predicates.orderByDesc(createTime)// 按时间倒序constresultawaitdb.query(predicates,[id,title,done])// result 是 ResultSet需要手动转成数组constlist:Todo[][]while(result.goToNextRow()){list.push({id:result.getLong(result.getColumnIndex(id)),title:result.getString(result.getColumnIndex(title)),done:result.getLong(result.getColumnIndex(done))1})}result.close()returnlist}要点RdbPredicates是查询条件构造器orderByDesc排序。query返回的是ResultSet游标要用goToNextRow()getXXX()一行行取最后close()释放。转成普通数组后UI 才好用ForEach渲染。第五步改和删asyncfunctiontoggle(id:number,done:boolean){constvalue:ValuesBucket{done:done?1:0}constpnewrelationalStore.RdbPredicates(todo)p.equalTo(id,id)awaitdb.update(value,p)// 按条件更新}asyncfunctionremove(id:number){constpnewrelationalStore.RdbPredicates(todo)p.equalTo(id,id)awaitdb.delete(p)// 按条件删除}改和删都用RdbPredicates指定哪一行equalTo(id, id)。更新时只放要改的字段其余不动。常见误区小白必踩误区说明建表漏IF NOT EXISTSapp 第二次启动表已存在再CREATE直接报错。务必加上。ResultSet 不close()查询返回的游标占资源用完必须close()否则泄漏。忘了主键自增没设AUTOINCREMENT插入重复 id 会冲突。需要唯一标识就用自增主键。下面这段代码可以直接复制到 DevEco Studio 里运行。建议你边读边敲改一改文末「动手改一改」里的参数亲眼看看效果。完整可运行示例relationalStore 建表与增查演示本地关系型数据库的最小闭环建表、插入、查询。完整示例// 关系型数据库建表 插入 查询import{relationalStore}fromkit.ArkDataconstSQL_CREATECREATE TABLE IF NOT EXISTS user ( id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL, age INTEGER )asyncfunctiondemo(db:relationalStore.RdbStore){awaitdb.executeSql(SQL_CREATE)// 建表幂等awaitdb.insert(user,{name:小明,age:18})// 插入一行constrsawaitdb.query(user,[name,age])// 查询while(rs.goToNextRow()){console.info(namers.getString(0) agers.getLong(1))}rs.close()}你会看到什么运行后 Log 里打印出name小明 age18。表已持久化下次启动应用数据还在。动手改一改把age: 18改成age: 20再查一次验证已落库。用db.delete(user, ...)实现按条件删除。给查询加WHERE age 16的 predicates做条件过滤。写在最后relationalStore看着 API 多其实就五个动作建库、建表、增、查、改删。它和普通 SQLite 一模一样会 SQL 就会这个。适合存结构固定、要查询排序的数据。如果只是存一个用户名、一个开关用不着上数据库——下一篇讲的Preferences更轻。选对存储方式比会写代码更重要。
RELATED

相关推荐

影刀RPA 图片批量压缩与格式转换:处理大量素材

影刀RPA 图片批量压缩与格式转换:处理大量素材

title: “影刀RPA 图片批量压缩与格式转换:处理大量素材” date: 2026-07-01 author: 林焱 影刀RPA 图片批量压缩与格式转换:处理大量素材 电商运营有几百张产品图,需要统一压缩到500KB以内、统一转成JPEG、统一加水印、统一改尺寸……这类批…

📅 2026/10/5 13:17:14
PIC18F47K40与MCP3202实现锂电池电压均衡方案

PIC18F47K40与MCP3202实现锂电池电压均衡方案

1. 项目背景与核心需求在锂离子电池组应用中,电压不平衡问题就像一群跑步运动员中有人掉队一样令人头疼。当多个电池串联工作时,由于制造工艺差异、温度分布不均或老化程度不同,各单体电池的充电状态会出现明显偏差。这种不平衡如果不及时纠正…

📅 2026/9/14 16:26:43
TongWeb7生产环境安全加固实战:从验证码到三员分立

TongWeb7生产环境安全加固实战:从验证码到三员分立

1. 项目概述:为什么生产环境下的TongWeb7必须做安全加固?最近在帮一个金融客户做中间件迁移和上生产前的安全合规检查,项目核心就是把应用从旧版本的WebLogic迁移到国产的TongWeb7上。客户的安全团队提了一堆要求,从最基础的控制台…

📅 2026/10/24 11:22:46
MORE NEWS

更多资讯

📰

特种工监察部门怎么找官方报名入口?转岗别被中介骗了

特种工监察部门怎么找官方报名入口?转岗别被中介骗了 你是不是也遇到过这种情况?刚拿到特种作业操作证,想换个城市工作,结果发现连报名都搞不清楚,怕被中介骗钱?别急,今天我就用一个真实的案例,带你看清 特种工监察部门 怎么找、 官方报名入口…

📰

长治市电力电缆证全流程办理指南 良心建议

长治市电力电缆证全流程办理指南 良心建议 之前考的证在外省能不能转过来?这几乎是每个准备在长治市办理电力电缆证的老电工、电缆施工人员最关心的问题。我见过太多人因为这个问题绕了弯路,甚至花冤枉钱、耽误工期。今天这份 良心建议…

📰

定州电工证报名地点值不值得考?怕被坑?一文说清

定州电工证报名地点值不值得考?怕被坑?一文说清 你是不是也遇到过这种情况:听说电工证好找工作、好赚钱,但又不知道去哪里报名?怕被中介忽悠、怕交了钱拿不到证、怕证书不靠谱?这些担心不是没有道理,特别是在 定州电工证报名地点…

📰

还需要考电工证吗报名费多少钱

证书过期了不知道怎么复审延期?电工证保姆级教程来了 证书过期了不知道怎么复审延期?很多人在遇到这个问题时手忙脚乱,甚至错过了补办的最佳时间,影响了工作。别急,今天我就从濮阳中小施工企业负责人的角度,给大家讲讲 还需要考电工证吗…

📰

我国考电工证试题值不值得考?特种作业证怎么转异地?

我国考电工证试题值不值得考?特种作业证怎么转异地? 现在找工作, 急需特种作业证才能上岗 ,尤其是电工证,是很多行业的“通行证”。但你可能还在纠结: 我国考电工证试题值不值得考 ?电工证到底能不能帮你打开职业大门?下面我结合…

📰

海口电工证去哪里考好模拟考试题库

海口电工证在哪里考好?证书过期了不知道怎么复审延期 证书过期了不知道怎么复审延期,这事儿我见过太多人跑错路、花冤枉钱。很多人拿着低压电工证、高压电工证,以为只要考过了就万事大吉,结果一两年后发现证书已经失效,再想补救,不是流程搞不清楚,就是…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬