发布时间:2026/8/5 7:32:04
鸿蒙关系数据库代码案例 鸿蒙关系数据库代码案例单页写完便于新手入门学习// 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/8/5 7:27:03

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

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

2026/8/5 7:27:03

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

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

2026/8/5 7:27:03

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

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

2026/8/5 12:07:43

Django ORM高效左连接:prefetch_related深度解析与实践

它深入探究了于其中怎样高效地去执行父子表的左连接查询, 目的是获取全部父记录以及与之关联的子记录, 这里所说的父记录包含那些不存在子记录的情况, 我们对和原始SQL查询的局限进行了对比, 着重介绍了ORM所提供的方法, 阐释了其工作原理、具备的优势以及在防止数据冗余和优化…

2026/8/5 12:07:42

通识:计算机组成原理 + 计算机网络 + 操作系统

第一篇 - 计算机组成原理 (一)进制系统与进制原理 学完后能掌握进制本质,熟练进行各种进制转换。 1.十进制 转 任意进制 —— 短除法(按规格装苹果) 例: 15个苹果 → 1车1箱1盒1个 1111(二进制…

2026/8/5 12:07:42

LeetCode 49.字母异位词分组 (HashMap + 字符串排序)

class Solution {// 方法定义&#xff1a;返回双层字符串列表&#xff0c;存储所有异位词分组public List<List<String>> groupAnagrams(String[] strs) {// 1.创建Map容器&#xff1a;key排序字符串(分组标签)&#xff0c;value原始单词列表(分组内容)Map<Stri…

2026/8/5 12:07:42

从CTF实战解析文件上传漏洞:绕过防护与安全防御全攻略

1. 项目概述&#xff1a;从一道CTF题看文件上传漏洞的攻防本质最近在复盘一些经典的网络安全竞赛题目&#xff0c;特别是关于文件上传漏洞的&#xff0c;发现“[强网杯 2019]Upload”这道题非常有意思。它不像一些直白的题目&#xff0c;给你一个明显有缺陷的上传点&#xff0c…

2026/8/5 12:07:42

13、Rust程序设计语言——认识Cargo和Crates.io

目录1. 采用发布配置自定义构建2. 将crate发布到Crates.io2.1 编写有用的文档注释2.1.1 常用章节2.1.2 文档注释作为测试2.1.3 注释包含项的结构2.2 导出实用的公有API2.3 创建crates.io账号2.4 向新crate添加元数据2.5 发布到crates.io2.6 发布现有crate的新版本2.7 使用cargo…

2026/8/5 12:02:42

HarmonyOS NEXT 企业级记账APP:企业级项目总结与后续规划

企业级项目总结与后续规划 本文是《HarmonyOS NEXT 企业级开发实战&#xff1a;30篇打造智能记账APP》系列的第 30 篇&#xff0c;对应 Git Tag v1.0.0。总结 HarmonyLedger 30 篇完整成果&#xff0c;规划后续版本路线图&#xff08;云同步、AI、多端&#xff09;。 前言 本篇…

2026/8/5 3:13:11

如何用免费工具突破游戏窗口限制:SRWE完整使用指南

如何用免费工具突破游戏窗口限制&#xff1a;SRWE完整使用指南 【免费下载链接】SRWE Simple Runtime Window Editor 项目地址: https://gitcode.com/gh_mirrors/sr/SRWE 你是否遇到过这样的困扰&#xff1f;想为心爱的游戏截图&#xff0c;却发现游戏不支持自定义分辨率…

2026/8/5 0:01:34

三升四,比成绩下滑更可怕的,是孩子开始「认命」

分水岭上&#xff0c;最难的不是翻过去&#xff0c;是孩子不想翻了。八月初了。这两个字&#xff0c;对三升四的家长来说&#xff0c;比任何闹钟都让人清醒。最近的家长群里&#xff0c;气氛明显不一样了。一升二的在关心兴趣班&#xff0c;二升三的在讨论要不要提前学英语。而…

2026/8/5 0:01:34

Java缓存框架:JetCache

TOC 一、简介 JetCache 是一个 Java 缓存抽象框架&#xff0c;为不同的缓存解决方案提供了统一的使用方式。 它提供的注解比 Spring Cache 更加强大。 JetCache 的注解支持原生 TTL、两级缓存以及在分布式环境中的自动刷新功能&#xff0c;同时你也可以通过代码直接操作 Cach…

2026/8/5 0:01:34

AD 铺铜设置十字连接,过孔全连接,新版AD的简单设置

需求&#xff1a;通孔焊盘 十字花&#xff1b;过孔 Via 实心直连&#xff1b;贴片焊盘按需设置 AD 测试版本AD24 很多工程师踩坑&#xff1a;全部统一十字&#xff0c;导致接地过孔阻抗高、大电流发热&#xff01; 一、快捷键打开规则 PCB 界面按下&#xff1a;D R 展开…

2026/8/3 22:40:58

实测才敢推 AI论文网站 2026最新测评与推荐

2026年真正好用的AI论文网站&#xff0c;核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测&#xff0c;千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队&#xff0c;覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。一、综…

2026/8/3 13:26:41

2026必备!AI论文网站测评:最新推荐与深度对比

2026年真正好用的AI论文网站&#xff0c;核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测&#xff0c;千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队&#xff0c;覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

2026/8/3 16:43:13

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具&#xff0c;覆盖选题构思、文献整理、内容生成、格式排版等核心场景&#xff0c;真正帮你高效搞定论文难题。 一、全流程王者&#xff1a;一站式搞定论文全链路&#xff08;一天定稿首…