鸿蒙关系数据库代码案例

发布时间:2026/11/15 7:16:23

鸿蒙关系数据库代码案例 鸿蒙关系数据库代码案例单页写完便于新手入门学习// Index.ets import relationalStore from ohos.data.relationalStore; import common from ohos.app.ability.common; // 数据表常量 const TABLE_NAME user; const DB_NAME PracticeDB.db; const DB_CONFIG: relationalStore.StoreConfig { name: DB_NAME, securityLevel: relationalStore.SecurityLevel.S1 }; // 用户实体 interface User { id?: number;name: string; age: number; } Entry Component struct RdbCurdDemo { State userList: User[] []; State inputName: string ; State inputAge: number 18; rdbStore: relationalStore.RdbStore | null null; ctx: common.UIAbilityContext | null null; aboutToAppear() { this.ctx getContext(this) as common.UIAbilityContext; this.initDB(); } // 初始化数据库、创建表 async initDB() { if (!this.ctx) return; try { this.rdbStore await relationalStore.getRdbStore(this.ctx, DB_CONFIG); const createSql CREATE TABLE IF NOT EXISTS ${TABLE_NAME} ( id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL, age INTEGER ); await this.rdbStore.executeSql(createSql); console.info(数据库初始化成功); this.queryAll(); } catch (err) { console.error(初始化失败, JSON.stringify(err)); } } // 【CREATE】新增 async insertUser() { if (!this.rdbStore || !this.inputName) return; const valueBucket: relationalStore.ValuesBucket { name: this.inputName, age: this.inputAge }; try { const rowId await this.rdbStore.insert(TABLE_NAME, valueBucket); console.info(新增成功 rowId:, rowId); this.queryAll(); } catch (e) { console.error(新增失败, e); } } // 【READ】查询全部修复重点使用RdbPredicates async queryAll() { if (!this.rdbStore) return; let resultSet: relationalStore.ResultSet | null null; try { // ✅ 正确写法构造查询条件对象不再直接传表名字符串 const predicates new relationalStore.RdbPredicates(TABLE_NAME); resultSet await this.rdbStore.query(predicates, [id, name, age]); const list: User[] []; // !非空断言resultSet这里一定有值 while (resultSet.goToNextRow()) { list.push({ id: resultSet.getLong(0), name: resultSet.getString(1), age: resultSet.getLong(2) }); } this.userList list; } catch (e) { console.error(查询失败, e); } finally { // 关闭游标 if (resultSet ! null) { resultSet.close(); } } } // 【UPDATE】修改 async updateUser(userId: number, newName: string) { if (!this.rdbStore) return; const bucket: relationalStore.ValuesBucket { name: newName }; const predicates new relationalStore.RdbPredicates(TABLE_NAME); predicates.equalTo(id, userId); try { const count await this.rdbStore.update(bucket, predicates); console.info(更新行数${count}); this.queryAll(); } catch (e) { console.error(更新失败, e); } } // 【DELETE】删除 async deleteUser(userId: number) { if (!this.rdbStore) return; const predicates new relationalStore.RdbPredicates(TABLE_NAME); predicates.equalTo(id, userId); try { const delCount await this.rdbStore.delete(predicates); console.info(删除行数${delCount}); this.queryAll(); } catch (e) { console.error(删除失败, e); } } build() { Column() { Text(RDB数据库 CURD 练习) .fontSize(24) .fontWeight(FontWeight.Bold) .margin({ bottom: 12 }) Row() { TextInput({ text: this.inputName, placeholder: 姓名 }) .width(120) .onChange((v: string) this.inputName v) TextInput({ text: this.inputAge.toString(), placeholder: 年龄 }) .width(80) .margin({ left: 6 }) .onChange((v: string) { const num Number(v); this.inputAge isNaN(num) ? 0 : num; }) }.margin({ bottom: 8 }) Button(新增用户) .width(90%) .onClick(() this.insertUser()) Text( 用户列表 ).margin({ top: 12 }) List() { ForEach(this.userList, (item: User) { ListItem() { Row() { Text(ID:${item.id} ${item.name} ${item.age}岁) .layoutWeight(1) Button(改名字) .fontSize(12) .margin({ right: 4 }) .onClick(() this.updateUser(item.id!, item.name _edit)) Button(删除) .fontSize(12) .backgroundColor(#dc3545) .onClick(() this.deleteUser(item.id!)) } } }) } .width(100%) .height(300) .margin({ top: 8 }) } .width(100%) .padding(16) } }
延伸阅读

更多相关文章

2026/11/12 22:52:56

神舟战神SBC6音效软件失联?彻底解决驱动不匹配与系统冲突

1. 问题定位:为什么SBC6软件会“找不到”你的设备?如果你正在使用搭载了Sound Blaster Cinema 6(简称SBC6)音效芯片的神舟战神系列游戏本,大概率遇到过这个让人火大的问题:你兴致勃勃地下载了官方音效软件&…

2026/11/14 10:09:21

前后端分离:现代Web开发的最佳实践

什么是前后端分离开发?进行前后端隔离状态下的开发, 这是一种把处于Web开发范畴内的前端, 也就是UI展示相关层面, 以及后端即业务逻辑相关层面, 完全予以分隔开来的开发模式。在传统的Web开发情形里, 前后端代码常常是紧密地耦合在一块, 对于前端而言通过页面渲染直…

2026/11/14 13:50:35

CRC校验算法详解:从原理到C语言/Python实战实现

1. 项目概述:从“校验和”到“循环冗余校验”在嵌入式开发、通信协议、文件校验乃至日常的数据传输中,我们经常听到“校验”这个词。最简单的校验是“校验和”,就是把所有数据字节加起来,取个低8位或16位。但这种方式太容易被“蒙…

2026/11/15 7:13:18

中级电工证可以家装吗 含金量到底多高

中级电工证可以家装吗 含金量到底多高 你学历不高怕报不上名?中级电工证可以家装吗?这是很多在一线干活的师傅最关心的问题。别看证书只是个纸片, 含金量…

2026/11/15 7:13:18

临浦电工证保姆级教程:劳务班组负责人怎么避开报名坑

临浦电工证保姆级教程:劳务班组负责人怎么避开报名坑 不知道去哪报名怕被中介坑?作为许昌一家劳务班组的负责人,我之前也吃过亏,花了几千块报名临浦电工证,结果拿到的是假证,连考试都没通过。这次我从头梳理了整个流程,把每一步都写得明明白白,确保你…

2026/11/15 7:13:18

工地太忙根本没时间复习考试,培训电工证要去哪里千万别踩坑

工地太忙根本没时间复习考试,培训电工证要去哪里千万别踩坑 工地太忙根本没时间复习考试,你不是一个人。很多电工在工地干活,一忙起来连抽空复习电工证考试的时间都没有,结果证书到期了还不知道怎么处理,或者考不过直接丢掉工作机会。…

2026/11/15 7:13:18

电工作业复审及格分数保姆级教程:学历不高也能拿下电工证

电工作业复审及格分数保姆级教程:学历不高也能拿下电工证 你是不是也觉得学历不高,考个电工作业复审根本没戏?别急,今天我就从一个转岗电工的角度,手把手教你搞定电工作业复审及格分数,还有怎么选培训机构、怎么答题、怎么避开那些坑,一整套保姆级教程…

2026/11/15 7:08:18

电工证如何网上查到的 上岗必备证件怎么查最靠谱

电工证如何网上查到的 上岗必备证件怎么查最靠谱 之前考的证在外省能不能转过来?这个问题几乎是每个想进工地、进工厂、进电力公司的人都问过的。尤其是在像信阳浉河区这样,很多务工人员经常在省内甚至跨省流动的地区,这个问题直接关系到你能不能顺利上岗…

2026/11/15 0:02:49

电工证考试口诉怎么准备值不值得考

电工证考试口诉怎么准备值不值得考 实操考试心里没底怕挂科,这是大多数准备考电工证的人心里最真实的感受。尤其是面对【电工证考试口诉】环节,很多人不知道该怎么准备,甚至担心自己说不好就被淘汰。其实,只要掌握方法, 值不值得考…

2026/11/15 0:02:49

桑植县考电工证千万别踩坑!报名全流程教你避坑

桑植县考电工证千万别踩坑!报名全流程教你避坑 你是不是也遇到过这种情况:想考个电工证,但不知道从哪儿下手,怕被中介坑,怕花冤枉钱,更怕考了证还不能用?别急,这正是你该看这篇文章的原因。在桑植县考电工证,确实有很多人被坑过,但只要你知道流程、…

2026/11/15 0:02:49

电工证考试口诉怎么准备值不值得考

电工证考试口诉怎么准备值不值得考 实操考试心里没底怕挂科,这是大多数准备考电工证的人心里最真实的感受。尤其是面对【电工证考试口诉】环节,很多人不知道该怎么准备,甚至担心自己说不好就被淘汰。其实,只要掌握方法, 值不值得考…

2026/11/15 0:02:49

桑植县考电工证千万别踩坑!报名全流程教你避坑

桑植县考电工证千万别踩坑!报名全流程教你避坑 你是不是也遇到过这种情况:想考个电工证,但不知道从哪儿下手,怕被中介坑,怕花冤枉钱,更怕考了证还不能用?别急,这正是你该看这篇文章的原因。在桑植县考电工证,确实有很多人被坑过,但只要你知道流程、…

2026/11/15 4:46:37

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/15 2:06:31

SSM电子书店源码全解析:结构、原理、部署与排错实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑