数据持久化-关系型数据库
基于SQLite组件提供的本地数据库,用于管理应用中的结构化数据
用户首选项只能在轻量级数据中进行数据持久化,复杂的数据就需要用到关系型数据库
三步使用:1.初始化数据库 2.增删改数据 3.查询数据
1.初始化数据库
1)导入关系型数据库模块
import relationalStore from '@ohos.data.relationalSore';
2) 初始化数据库表
//rdb配置 const config = { name: 'MyApplication.db',//数据库文件名 securityLevel: relationalSore.SecurityLevel.S1 //数据库安全级别 } //初始化表的SQL const sql = 'CREATE TABLE IF NOT EXISTS TASK ( ID INTEGER PRIMARY KEY, NAME TEXT NOT NULL, FINISHED bit ) ' //获取rdb relationalStore.getRbdStore(this.context, config,(err, rdbStore) => { //执行SQL,后续的所有增删改查都是使用rdbStore对象 rdbStore.executeSql(sql) })
可以把rdb抽取为成员变量供下面重复使用
private rdbStore:relationalStore.RdbStore
保存rdbStore
this.rdbStore = rdbStore
2.增删改数据
1)新增数据
//准备数据 let task = {id: 1, name:'任务1',finished:false}; //新增 this.rdbStore.insert(this.tableName, task)
2)修改数据
//要更新的数据 let task = {'finished' : true}; //查询条件,RdbPredicates就是条件谓词 let predicates = new relationalStore.RdbPredicates(this.tableName) predicates.equalTo('ID', id) //执行更新 this.rdbStore.update(task,predicates)
3)删除数据
//查询条件 let predicates = new relationalStore.RdbPredicates(this.tableName) predicates.equalTo('ID', id) //执行删除 this.rdbStore.delete(predicates)
3.查询数据
1)查询数据
//查询条件 let predicates = new relationalStore.RdbPredicates(this.tableName) //执行查询 let result = await this.rdbStore.query(predicates,['ID','NAME','FINISHED'])
查询是异步的,需要await等待,返回的是promise类型的result结果集,需要进行解析
2)解析结果
//准备数组保存结果 let tasks: any[] = [] //循环遍历结果集,判断是否结果遍历到最后一行 while(!result.isAtlastRow){ //指针移动到下一行数据 result.goToNextRow() //根据字段名获取字段index,从而获取字段值 let id = result.getLong(result.getColumnIndex('ID')); let name = result.getString(result.getColumnIndex('NAME')); tasks.push({id,name,finished: !!finished}) }
拿到的finished结果需要转化为布尔类型所以要用!!finished来转化
假如finished=0, !finished=!0=1=true,!!finished=!true=false,这样就把0转化为false了
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)