0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于Rdb创建的Data_Ability的数据操作过程

OpenHarmony技术社区 来源:HarmonyOS技术社区 作者:HarmonyOS技术社区 2022-04-12 08:56 次阅读

首先介绍几个基本概念和方法

①关系型数据库

基于关系模型来管理数据的数据库,以行和列的形式存储数据。(可以简单理解成一个 excel 表格的形式)

②谓词

数据库中用来代表数据实体的性质、特征或者数据实体之间关系的词项,主要用来定义数据库的操作条件。(谓词:属于函数的一种,但其返回值是真值(true/false/unknown))

③结果集

指用户查询之后的结果集合,有多种方法可以对数据进行访问。

④SQLite 数据库

它是一个开源的轻型的数据库。

⑤场景介绍

关系型数据库是在 SQLite 基础上实现的本地数据操作机制,提供给用户无需编写原生 SQL 语句就能进行数据增删改查的方法,同时也支持原生 SQL 语句操作。

再看几个Data中相关生命周期功能介绍

如下图:

基于Rdb创建的Data_Ability的数据操作过程

运作机制

基于Rdb创建的Data_Ability的数据操作过程

从上图可以知:Data 模板的 Ability 是基于 Rdb 封装的,Rdb 是基于 SQLite 数据库,一个开源的轻型的数据库,所以Data_Ability 高效便捷的为我们提供了一套工具去管理其自身和其他应用存储数据的访问。 下面逐步分析基于 Rdb 创建的一个 Data_Ability 的数据操作过程:
//=====================导入模块部分=========================
//导入DataAbility谓词相关模块
importdataAbilityfrom'@ohos.data.dataability'
//导入rdb关系数据库模块
importdataRdbfrom'@ohos.data.rdb'
//=====================定义变量部分=========================
//定义数据库表名book
constTABLE_NAME='book'
//与此RDB存储相关的数据库配置。. encryptKey:为数据库设置的加密密钥
constSTORE_CONFIG={name:'book.db',encryptKey:newUint8Array([])}
//定义SQL_CREATE_TABLE关键字参数,下面执行参数会用到
constSQL_CREATE_TABLE='CREATETABLEIFNOTEXISTSbook(idINTEGERPRIMARYKEYAUTOINCREMENT,nameTEXTNOTNULL,ageINTEGER,introductionTEXTNOTNULL)'
//定义一个变量进行储存数据库返回内容,避免多次调用执行,节省性能
letrdbStore:any=undefined
//测试用打log用的
constTAG='DataAbility.data'
//=====================创建数据库=========================
exportdefault{
// onInitialized 在Ability初始化调用,通过此回调方法执行rdb等初始化操作。
onInitialized(abilityInfo){
console.info('DataAbilityonInitialized,abilityInfo='+abilityInfo.bundleName)
//getRdbStore()获得一个相关的RdbStore,操作关系型数据库,用户可以根据自己的需求配置RdbStore的参数,然后通过RdbStore调用相关接口可以执行相关的数据操作,结果以callback形式返回。
dataRdb.getRdbStore(STORE_CONFIG,1,(err,store)=>{
console.info('[data]getRdbStoreThen')
//执行包含指定参数但不返回值的SQL语句,结果以Promise形式返回。
store.executeSql(SQL_CREATE_TABLE,[])
//把获得的数据库存入本地变量,防止后面多次操作读取创建
rdbStore=store
});
},
//=====================数据库操作方法=========================
//url:通信使用的URI
//callback:自定义回调函数名如果操作成功,则返回ResultSet对象。
//valueBucket:指示数据库中要更新的数据行。键值对与数据库表的列名相关联
//TABLE_NAME:指定的目标表名。
//insert:向数据中插入一条数据。 callbacke方式调用:
insert(uri,valueBucket,callback){
console.info(TAG+'insertstart')
rdbStore.insert(TABLE_NAME,valueBucket,callback)
},


//url:通信使用的URI
//valueBucket:指示数据库中要更新的数据行。键值对与数据库表的列名相关联
//callback:指定callback回调函数。如果操作成功,则返回ResultSet对象。
// batchInsert:向数据库中插入多条数据。
batchInsert(uri,valueBuckets,callback){
console.info(TAG+'batchinsertstart')
//循环遍历
for(leti=0;i< valueBuckets.length; i++) {
            console.info(TAG+'batchinserti='+i)
if(i< valueBuckets.length - 1){
//最终还是用到的insert方法
rdbStore.insert(TABLE_NAME,valueBuckets[i],(num:number)=>{
console.info(TAG+'batchinsertret='+num)
})
}else{
rdbStore.insert(TABLE_NAME,valueBuckets[i],callback)
}
}
},



//url:通信使用的URI
//predicates:表示rdbPredicates的实例对象指定的查询条件。
//columns:表示要查询的列。如果值为空,则查询应用于所有列。
//callback:指定callback回调函数。如果操作成功,则返回ResultSet对象。
//query:查询数据库中的数据。
query(uri,columns,predicates,callback){
console.info(TAG+'querystart')
letrdbPredicates=dataAbility.createRdbPredicates(TABLE_NAME,predicates)
rdbStore.query(rdbPredicates,columns,callback)
},

//url:通信使用的URI
//valueBucket:指示数据库中要更新的数据行。键值对与数据库表的列名相关联
//predicates:表示要插入到表中的数据行。
//callback:指定callback回调函数。如果操作成功,则返回ResultSet对象。
// update:更新数据库中的数据。
update(uri,valueBucket,predicates,callback){
console.info(TAG+'updatestart')
letrdbPredicates=dataAbility.createRdbPredicates(TABLE_NAME,predicates)
rdbStore.update(valueBucket,rdbPredicates,callback)
},



//url:通信使用的URI
//delete:删除一条或多条数据。
//predicates:表示要删除表中的数据行。
//callback:指定callback回调函数。如果操作成功,则返回ResultSet对象。
delete(uri,predicates,callback){
console.info(TAG+'deletestart')
letrdbPredicates=dataAbility.createRdbPredicates(TABLE_NAME,predicates)
rdbStore.delete(rdbPredicates,callback)
}
};

文章有错误地方还请大佬一定指出纠正!

原文标题:鸿蒙Data Ability关系数据库使用

文章出处:【微信公众号:HarmonyOS技术社区】欢迎添加关注!文章转载请注明出处。

审核编辑:汤梓红
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 数据库
    +关注

    关注

    7

    文章

    3770

    浏览量

    64298
  • Data
    +关注

    关注

    0

    文章

    62

    浏览量

    38242
  • 模型
    +关注

    关注

    1

    文章

    3181

    浏览量

    48753

原文标题:鸿蒙Data Ability关系数据库使用

文章出处:【微信号:gh_834c4b3d87fe,微信公众号:OpenHarmony技术社区】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    手动移液器的使用操作过程

    手动移液器的使用操作过程  手动移液器常见于临床试验和实验室试验中,不同类型的移液器操作过程也有所不同,下面具体的解析一下。  一、使用方法:  1.根据所需取液量选择相应移液器及吸液嘴。  2.
    发表于 11-20 11:51

    电路板手工焊接操作过程

    `哪位大神可以分享电路板手工焊接的操作过程吗?`
    发表于 02-29 15:14

    求ATmega168看门狗复位的具体操作过程

    ATmega168看门狗复位的具体操作过程
    发表于 11-18 07:17

    千万注意!纤薄器件在操作过程中损坏不得

    千万注意!纤薄器件在操作过程中损坏不得
    发表于 04-29 06:29

    怎样去操作FTS-300光缆普查仪?在操作过程中有哪些常见问题?

    FTS-300光缆普查仪的测试原理FTS-300光缆普查仪的功能应用范围怎样去操作FTS-300光缆普查仪?在操作过程中有哪些常见问题?
    发表于 05-06 09:42

    C语言的平台操作过程

    两种学习C语言的平台操作过程,在后续内容学习中需要熟练应用。这两种方式分别为:keil c51编程软件+硬件调试平台台,,keilkeil c51c51编程软件编程软件+ proteusproteus软件...
    发表于 07-20 06:19

    如何去实现STM32串口通讯的操作过程

    STM32串口通讯有哪几种方式呢?如何去实现STM32串口通讯的操作过程呢?
    发表于 12-07 07:28

    STM32内部FLASH操作过程

    一般说STM32内部FLASH就是指主存储器区域写内部FLASH操作过程解锁在对FLASH写数据之前,需要先给解锁,因为芯片为了防止误操作修改应用程序,复位之后会给控制寄存器FLASH_CR上锁(1
    发表于 12-09 06:37

    GPIO输入完成按键扫描的操作过程是怎样的

    GPIO输入完成按键扫描的操作过程是怎样的
    发表于 02-08 07:29

    RT-Thread操作系统从开机到关机的操作过程是怎样的?

    RT-Thread操作系统从开机到关机的操作过程是怎样的?
    发表于 02-15 07:43

    基于Rdb创建的一个Data_Ability数据操作过程

    一套工具去管理其自身和其他应用存储数据的访问下面逐步分析基于Rdb创建的一个Data_Ability数据
    发表于 03-29 13:50

    心电监护仪操作过程

    心电监护仪是医院实用的精密医学仪器,能同时监护病人的动态心电图形、呼吸、体温、等生理参数。这里提供了心电监护仪操作过程使用维护。
    发表于 12-21 17:36 2.1w次阅读
    心电监护仪<b class='flag-5'>操作过程</b>

    FPGA应用中部分重配置的操作过程

    Partial Reconfiguration(部分重配置)在现在的FPGA应用中越来越常见,我们这次的教程以Project模式为例来说明部分重配置的操作过程
    的头像 发表于 07-05 15:28 3633次阅读
    FPGA应用中部分重配置的<b class='flag-5'>操作过程</b>

    在线快速修复终聚釜搅拌器轴磨损的现场操作过程

    在线快速修复终聚釜搅拌器轴磨损的现场操作过程
    发表于 12-06 15:17 5次下载

    磐石测控:深圳扭转试验机操作过程是什么样的?

    磐石测控:深圳扭转试验机操作过程是什么样的?
    的头像 发表于 10-20 11:17 670次阅读
    磐石测控:深圳扭转试验机<b class='flag-5'>操作过程</b>是什么样的?