鸿蒙 DevEcoStudio:关系型数据库增删改查练习

修改entry/src/main/ets/entryability目录下的EntryAbility.ts文件:

export default class EntryAbility extends UIAbility {onCreate(want, launchParam) {hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onCreate');

之后添加:

const config={
name:'person.db', //数据库文件名
SecurityLevel:relationalStore.SecurityLevel.S1
}
const sql='create table if not exists account(id int primary key,username varchar not null)'
relationalStore.getRdbStore(this.context,config,(err,rdbStore)=>{if (err) {console.log('连接失败')
}console.log('连接成功')rdbStore.executeSql(sql)globalThis.rdbStore=rdbStore
})

import window from '@ohos.window';

之后添加(如果输入上边代码后没有自动添加的话):

import relationalStore from '@ohos.data.relationalStore';
import securityLabel from '@ohos.file.securityLabel';

修改entry/src/main/ets/pages路径下的index.ets文件:

import relationalStore from '@ohos.data.relationalStore'
@Entry
@Component
struct Index {@State message: string = 'Hello World'rdbStore:relationalStore.RdbStore=globalThis.rdbStorebuild() {Row() {Column() {Text(this.message).fontSize(50).fontWeight(FontWeight.Bold)Text('增加').onClick(()=>{// insert into account values(1,'zhangsan')let data={id:1,username:'zhangsan'}this.rdbStore.insert('account',data,(err,rowId)=>{if (err) {console.log('添加失败')}console.log(rowId.toString()+'添加成功')})})Text('增加')  //第二条数据,可直接复制上边增加的代码.onClick(()=>{// insert into account values(2,'wangwu')let data={id:2,username:'wangwu'}this.rdbStore.insert('account',data,(err,rowId)=>{if (err) {console.log('添加失败')}console.log(rowId.toString()+'添加成功')})})Text('更新').onClick(()=>{//update account set username='lisi' where id=1let predicates=new relationalStore.RdbPredicates('account')predicates.equalTo('id',1)let data={username:'lisi'}this.rdbStore.update(data,predicates,(err,rows)=>{if (err) {console.log('sql语句错误,更新失败')}// rows输出值为0,说明没有更新;row为1,说明已更新console.log(rows.toString()+'更新成功')})})Text('删除').onClick(()=>{//delete from account where id=1let predicates=new relationalStore.RdbPredicates('account')predicates.equalTo('id',1)this.rdbStore.delete(predicates,(err,rows)=>{if (err) {console.log('sql语句错误,删除失败')}console.log(rows.toString()+'删除成功')})})Text('获取').onClick(()=>{//select id,username from account where id=1let predicates=new relationalStore.RdbPredicates('account')// predicates.equalTo('id',1)  //查询多条时注释掉this.rdbStore.query(predicates,['id','username'],(err,resultSet)=>{//resultSet.isAtLastRow方法 用于判断是不是箭头在最后一行,如果在最后一行返回true,否则返回falseif (!resultSet.isAtLastRow) {resultSet.goToNextRow()  //将箭头指针指向下一行//getColumnIndex 是获取指针指向那一行的哪个字段,getLong是获取字段相应的数据类型console.log(resultSet.getLong(resultSet.getColumnIndex('id')).toString()+'获取成功')console.log(resultSet.getString(resultSet.getColumnIndex('username'))+'获取成功')}})})}.width('100%')}.height('100%')}
}

实际效果图:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/12683.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

学习Nginx(五):虚拟主机配置

核心功能 在演示虚拟主机配置之前,来看一下Nginx配置的核心功能说明。 了解配置更多功能,请查看官方说明: http://nginx.org/en/docs/ngx_core_module.html [rootRockyLinux9 conf]# cat nginx.conf # 核心功能,全局配置 # 设置启…

Linux 生态与工具

各位大佬好 ,这里是阿川的博客 , 祝您变得更强 个人主页:在线OJ的阿川 大佬的支持和鼓励,将是我成长路上最大的动力 阿川水平有限,如有错误,欢迎大佬指正 目录 Linux生态简介:Linux工具lrzsz&#xff…

智能仪表在铁塔行业的应用

应用场景 可应用于基站的交直流配电箱及对基站内的动力设备进行数据采集和控制。 功能 1.对多个回路进行全电参量测量,实现基站内各回路用电能耗的集中管理; 2.丰富的DI/DO输入输出,NTC测温,温湿度测量等非电参量监测&#xff…

分体工业读写器的适用场景有哪些?

工业读写器根据设计方式不同,可分为一体式读写器和分体式读写器,不同读写器特点不同,适用场景也不同,下面我们就一起来了解一下超高频分体读写器适用场景有哪些。 超高频分体读写器介绍 超高频分体读写器是一种射频识别(RFID)设…

Sass语法介绍-导入

11【Sass语法介绍-导入】 1.前言 在 CSS 中我们可以通过 import 来导入一个样式文件,Sass 扩展了 CSS 的 import 规则,使得可以导入 CSS 后缀的样式文件和 Scss 后缀的样式文件,并且提供了对 mixin 、函数和变量的访问。 与 CSS 的 import…

初识C语言——第二十天

do while ()循环 do 循环语句; while(表达式); 句式结构: 执行过程: do while循环的特点: 代码练习: 二分法算法: int main() {int arr[] { 0,1,2,3,4,5,6,7,8,9};int k 7;//查找数字7,在arr这个数组…

80%的产品经理被辞退不是因为能力,而是因为…

新手刚入门做产品经理,对产品经理的工作其实也是没有把握,这是对这份工作不够了解,不知道整个工作的流程,所以会感觉“没把握”,结果就是导致焦虑。 如果你硬着头皮做一遍,知道大概是怎么回事,…

Advanced RAG 07:在RAG系统中进行表格数据处理的新思路

编者按: 目前,检索增强生成(RAG)系统成为了将海量知识赋能于大模型的关键技术之一。然而,如何高效地处理半结构化和非结构化数据,尤其是文档中的表格数据,仍然是 RAG 系统面临的一大难题。 本文作者针对这一…

中国仓储物流装备产业链上最全产品资料大全(目前238家公司产品资料……)...

导语 大家好,我是社长,老K。专注分享智能制造和智能仓储物流等内容。 新书《智能物流系统构成与技术实践》人俱乐部 知识星球【智能仓储物流技术研习社】内已经收录了如下中国230多家仓储物流装备和技术相关产业链的公司的产品手册,请星球会员…

好文推荐:基于热红外的双源能量平衡(TSEB)模型--从植物到全球尺度的蒸散诊断简史

文献 近日,美国农业部农业研究服务局(USDA-ARS)的科学家们发表了一篇重要的研究论文——“Agricultural and Forest Meteorology” (https://www.sciencedirect.com/journal/agricultural-and-forest-meteorology)&…

智慧公厕系统:改变“上厕所”体验的科技革新

公共厕所是城市建设中不可或缺的基础设施,然而,由于较为落后的管理模式,会常常存在着管理不到位、脏乱差的问题。为了改善公厕的使用体验,智慧公厕系统应运而生,并逐渐成为智慧城市建设的重要组成部分。本文将以智慧公…

AI工具如何简化日常生活?从论文到PPT,AI助手大集合

AI助手大集合,猛戳进来! 在工作和生活中,我经常使用各种各样的人工智能工具,如AI写作软件、AI语音助手、AI绘图工具等。我发现,这些工具能够极大地提高工作效率并简化日常生活。作为一名AI工具的忠实爱好者&#xff0…

Python爬虫——如何使用urllib的HTTP基本库

怎样通过 urllib库 发送 HTTP 请求? urllib库主要由四个模块组成: urllib.request 打开和读取 URLurllib.error 包含 urllib.request 抛出的异常urllib.parse 用于解析 URLurllib.robotparser 用于解析 robots.txt 文件 1. 使用urllib.parse解析URL 使用urlparse(…

【3dmax笔记】022:文件合并、导入、导出

文章目录 一、合并二、导入三、导出四、注意事项一、合并 只能合并 max 文件(高版本能够合并低版本模型,低版本不能合并高版本的模型)。点击【文件】→【导入】→【合并】: 选择要合并的文件,后缀名为3dmax默认的格式,max文件。 二、导入 点击【文件】→【导入】→【导…

【ZYNQ】Vivado 封装自定义 IP

在 FPGA 开发设计中,IP 核的使用通常是不可缺少的。FPGA IP 核是指一些已经过验证的、可重用的模块或者组件,可以帮助构建更加复杂的系统。本文主要介绍如何使用 Vivado 创建与封装用户自定义 IP 核,并使用创建的 IP 核进行串口回环测试。 目…

为什么只有const-static-枚举/整型才可以类内初始化

在C中,静态数据成员(static member)是类的所有对象共享的一个变量。由于它们不是与类的任何特定对象实例相关联的,因此不能在类的构造函数中初始化它们。静态数据成员的初始化必须在类定义之外进行,除非它们满足特定的…

谷歌I/O 2024大会全面硬刚OpenAI

🦉 AI新闻 🚀 谷歌发布升级版Gemini机器人 竞争OpenAI ChatGPT-4 摘要:谷歌展示了升级版的 Gemini 聊天机器人,其支持实时处理视频和语音输入,并准确回答问题。此次发布时机与 OpenAI 公布 ChatGPT-4o 新模型几乎同步…

pycharm导入项目,创建虚拟环境,下载依赖

1、安装conda,此处省略 2、管理员身份打开CMD命令行,创建虚拟环境 conda create --name env_name python3.7 -y 其中,env_name替换为自己想要的环境名字,python3.7表示指定python版本为3.7,-y意味着遇到询问直接回复…

Redis经典问题:BigKey问题

大家好,我是小米,今天来和大家聊聊Redis中的一个经典问题:BigKey问题。在互联网系统中,我们经常需要保存大量的用户数据,比如用户的个人信息、粉丝列表、发表的微博内容等等。这些数据往往会被存储在Redis这样的缓存系统中,以提高系统的性能和响应速度。但是,在处理这些…

什么样的开放式耳机好用舒服?五款高人气质量绝佳产品力荐!

​随着人们越来越注重个人的身体健康问题,掀起了一股运动浪潮,现在大家都会喜欢跑跑步,运动一下使自己的身体更好,那么在运动时候如果能有音乐听的话,人们的运动状态就能达到更好的水平。鉴于传统入耳式耳机给用户带来…