一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于Rdb創(chuàng)建的Data_Ability的數(shù)據(jù)操作過程

OpenHarmony技術(shù)社區(qū) ? 來源:HarmonyOS技術(shù)社區(qū) ? 作者:HarmonyOS技術(shù)社區(qū) ? 2022-04-12 08:56 ? 次閱讀

首先介紹幾個基本概念和方法

①關(guān)系型數(shù)據(jù)庫

基于關(guān)系模型來管理數(shù)據(jù)的數(shù)據(jù)庫,以行和列的形式存儲數(shù)據(jù)。(可以簡單理解成一個 excel 表格的形式)

②謂詞

數(shù)據(jù)庫中用來代表數(shù)據(jù)實體的性質(zhì)、特征或者數(shù)據(jù)實體之間關(guān)系的詞項,主要用來定義數(shù)據(jù)庫的操作條件。(謂詞:屬于函數(shù)的一種,但其返回值是真值(true/false/unknown))

③結(jié)果集

指用戶查詢之后的結(jié)果集合,有多種方法可以對數(shù)據(jù)進(jìn)行訪問。

④SQLite 數(shù)據(jù)庫

它是一個開源的輕型的數(shù)據(jù)庫。

⑤場景介紹

關(guān)系型數(shù)據(jù)庫是在 SQLite 基礎(chǔ)上實現(xiàn)的本地數(shù)據(jù)操作機(jī)制,提供給用戶無需編寫原生 SQL 語句就能進(jìn)行數(shù)據(jù)增刪改查的方法,同時也支持原生 SQL 語句操作。

再看幾個Data中相關(guān)生命周期功能介紹

如下圖:

基于Rdb創(chuàng)建的Data_Ability的數(shù)據(jù)操作過程

運作機(jī)制

基于Rdb創(chuàng)建的Data_Ability的數(shù)據(jù)操作過程

從上圖可以知:Data 模板的 Ability 是基于 Rdb 封裝的,Rdb 是基于 SQLite 數(shù)據(jù)庫,一個開源的輕型的數(shù)據(jù)庫,所以Data_Ability 高效便捷的為我們提供了一套工具去管理其自身和其他應(yīng)用存儲數(shù)據(jù)的訪問。 下面逐步分析基于 Rdb 創(chuàng)建的一個 Data_Ability 的數(shù)據(jù)操作過程:
//=====================導(dǎo)入模塊部分=========================
//導(dǎo)入DataAbility謂詞相關(guān)模塊
importdataAbilityfrom'@ohos.data.dataability'
//導(dǎo)入rdb關(guān)系數(shù)據(jù)庫模塊
importdataRdbfrom'@ohos.data.rdb'
//=====================定義變量部分=========================
//定義數(shù)據(jù)庫表名book
constTABLE_NAME='book'
//與此RDB存儲相關(guān)的數(shù)據(jù)庫配置。. encryptKey:為數(shù)據(jù)庫設(shè)置的加密密鑰
constSTORE_CONFIG={name:'book.db',encryptKey:newUint8Array([])}
//定義SQL_CREATE_TABLE關(guān)鍵字參數(shù),下面執(zhí)行參數(shù)會用到
constSQL_CREATE_TABLE='CREATETABLEIFNOTEXISTSbook(idINTEGERPRIMARYKEYAUTOINCREMENT,nameTEXTNOTNULL,ageINTEGER,introductionTEXTNOTNULL)'
//定義一個變量進(jìn)行儲存數(shù)據(jù)庫返回內(nèi)容,避免多次調(diào)用執(zhí)行,節(jié)省性能
letrdbStore:any=undefined
//測試用打log用的
constTAG='DataAbility.data'
//=====================創(chuàng)建數(shù)據(jù)庫=========================
exportdefault{
// onInitialized 在Ability初始化調(diào)用,通過此回調(diào)方法執(zhí)行rdb等初始化操作。
onInitialized(abilityInfo){
console.info('DataAbilityonInitialized,abilityInfo='+abilityInfo.bundleName)
//getRdbStore()獲得一個相關(guān)的RdbStore,操作關(guān)系型數(shù)據(jù)庫,用戶可以根據(jù)自己的需求配置RdbStore的參數(shù),然后通過RdbStore調(diào)用相關(guān)接口可以執(zhí)行相關(guān)的數(shù)據(jù)操作,結(jié)果以callback形式返回。
dataRdb.getRdbStore(STORE_CONFIG,1,(err,store)=>{
console.info('[data]getRdbStoreThen')
//執(zhí)行包含指定參數(shù)但不返回值的SQL語句,結(jié)果以Promise形式返回。
store.executeSql(SQL_CREATE_TABLE,[])
//把獲得的數(shù)據(jù)庫存入本地變量,防止后面多次操作讀取創(chuàng)建
rdbStore=store
});
},
//=====================數(shù)據(jù)庫操作方法=========================
//url:通信使用的URI
//callback:自定義回調(diào)函數(shù)名如果操作成功,則返回ResultSet對象。
//valueBucket:指示數(shù)據(jù)庫中要更新的數(shù)據(jù)行。鍵值對與數(shù)據(jù)庫表的列名相關(guān)聯(lián)
//TABLE_NAME:指定的目標(biāo)表名。
//insert:向數(shù)據(jù)中插入一條數(shù)據(jù)。 callbacke方式調(diào)用:
insert(uri,valueBucket,callback){
console.info(TAG+'insertstart')
rdbStore.insert(TABLE_NAME,valueBucket,callback)
},


//url:通信使用的URI
//valueBucket:指示數(shù)據(jù)庫中要更新的數(shù)據(jù)行。鍵值對與數(shù)據(jù)庫表的列名相關(guān)聯(lián)
//callback:指定callback回調(diào)函數(shù)。如果操作成功,則返回ResultSet對象。
// batchInsert:向數(shù)據(jù)庫中插入多條數(shù)據(jù)。
batchInsert(uri,valueBuckets,callback){
console.info(TAG+'batchinsertstart')
//循環(huán)遍歷
for(leti=0;iconsole.info(TAG+'batchinserti='+i)
if(i1){
//最終還是用到的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:表示要查詢的列。如果值為空,則查詢應(yīng)用于所有列。
//callback:指定callback回調(diào)函數(shù)。如果操作成功,則返回ResultSet對象。
//query:查詢數(shù)據(jù)庫中的數(shù)據(jù)。
query(uri,columns,predicates,callback){
console.info(TAG+'querystart')
letrdbPredicates=dataAbility.createRdbPredicates(TABLE_NAME,predicates)
rdbStore.query(rdbPredicates,columns,callback)
},

//url:通信使用的URI
//valueBucket:指示數(shù)據(jù)庫中要更新的數(shù)據(jù)行。鍵值對與數(shù)據(jù)庫表的列名相關(guān)聯(lián)
//predicates:表示要插入到表中的數(shù)據(jù)行。
//callback:指定callback回調(diào)函數(shù)。如果操作成功,則返回ResultSet對象。
// update:更新數(shù)據(jù)庫中的數(shù)據(jù)。
update(uri,valueBucket,predicates,callback){
console.info(TAG+'updatestart')
letrdbPredicates=dataAbility.createRdbPredicates(TABLE_NAME,predicates)
rdbStore.update(valueBucket,rdbPredicates,callback)
},



//url:通信使用的URI
//delete:刪除一條或多條數(shù)據(jù)。
//predicates:表示要刪除表中的數(shù)據(jù)行。
//callback:指定callback回調(diào)函數(shù)。如果操作成功,則返回ResultSet對象。
delete(uri,predicates,callback){
console.info(TAG+'deletestart')
letrdbPredicates=dataAbility.createRdbPredicates(TABLE_NAME,predicates)
rdbStore.delete(rdbPredicates,callback)
}
};

文章有錯誤地方還請大佬一定指出糾正!

原文標(biāo)題:鴻蒙Data Ability關(guān)系數(shù)據(jù)庫使用

文章出處:【微信公眾號:HarmonyOS技術(shù)社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

審核編輯:湯梓紅
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 數(shù)據(jù)庫
    +關(guān)注

    關(guān)注

    7

    文章

    3884

    瀏覽量

    65584
  • Data
    +關(guān)注

    關(guān)注

    0

    文章

    63

    瀏覽量

    38557
  • 模型
    +關(guān)注

    關(guān)注

    1

    文章

    3464

    瀏覽量

    49832

原文標(biāo)題:鴻蒙Data Ability關(guān)系數(shù)據(jù)庫使用

文章出處:【微信號:gh_834c4b3d87fe,微信公眾號:OpenHarmony技術(shù)社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    手動移液器的使用操作過程

    手動移液器的使用操作過程  手動移液器常見于臨床試驗和實驗室試驗中,不同類型的移液器操作過程也有所不同,下面具體的解析一下?! ∫?、使用方法:  1.根據(jù)所需取液量選擇相應(yīng)移液器及吸液嘴?! ?.
    發(fā)表于 11-20 11:51

    電路板手工焊接操作過程

    `哪位大神可以分享電路板手工焊接的操作過程嗎?`
    發(fā)表于 02-29 15:14

    求ATmega168看門狗復(fù)位的具體操作過程?

    ATmega168看門狗復(fù)位的具體操作過程
    發(fā)表于 11-18 07:17

    千萬注意!纖薄器件在操作過程中損壞不得

    千萬注意!纖薄器件在操作過程中損壞不得
    發(fā)表于 04-29 06:29

    怎樣去操作FTS-300光纜普查儀?在操作過程中有哪些常見問題?

    FTS-300光纜普查儀的測試原理FTS-300光纜普查儀的功能應(yīng)用范圍怎樣去操作FTS-300光纜普查儀?在操作過程中有哪些常見問題?
    發(fā)表于 05-06 09:42

    C語言的平臺操作過程

    兩種學(xué)習(xí)C語言的平臺操作過程,在后續(xù)內(nèi)容學(xué)習(xí)中需要熟練應(yīng)用。這兩種方式分別為:keil c51編程軟件+硬件調(diào)試平臺臺,,keilkeil c51c51編程軟件編程軟件+ proteusproteus軟件...
    發(fā)表于 07-20 06:19

    如何去實現(xiàn)STM32串口通訊的操作過程

    STM32串口通訊有哪幾種方式呢?如何去實現(xiàn)STM32串口通訊的操作過程呢?
    發(fā)表于 12-07 07:28

    STM32內(nèi)部FLASH操作過程

    一般說STM32內(nèi)部FLASH就是指主存儲器區(qū)域?qū)憙?nèi)部FLASH操作過程解鎖在對FLASH寫數(shù)據(jù)之前,需要先給解鎖,因為芯片為了防止誤操作修改應(yīng)用程序,復(fù)位之后會給控制寄存器FLASH_CR上鎖(1
    發(fā)表于 12-09 06:37

    GPIO輸入完成按鍵掃描的操作過程是怎樣的

    GPIO輸入完成按鍵掃描的操作過程是怎樣的
    發(fā)表于 02-08 07:29

    RT-Thread操作系統(tǒng)從開機(jī)到關(guān)機(jī)的操作過程是怎樣的?

    RT-Thread操作系統(tǒng)從開機(jī)到關(guān)機(jī)的操作過程是怎樣的?
    發(fā)表于 02-15 07:43

    基于Rdb創(chuàng)建的一個Data_Ability數(shù)據(jù)操作過程

    一套工具去管理其自身和其他應(yīng)用存儲數(shù)據(jù)的訪問下面逐步分析基于Rdb創(chuàng)建的一個Data_Ability數(shù)據(jù)
    發(fā)表于 03-29 13:50

    心電監(jiān)護(hù)儀操作過程

    心電監(jiān)護(hù)儀是醫(yī)院實用的精密醫(yī)學(xué)儀器,能同時監(jiān)護(hù)病人的動態(tài)心電圖形、呼吸、體溫、等生理參數(shù)。這里提供了心電監(jiān)護(hù)儀操作過程使用維護(hù)。
    發(fā)表于 12-21 17:36 ?2.1w次閱讀
    心電監(jiān)護(hù)儀<b class='flag-5'>操作過程</b>

    FPGA應(yīng)用中部分重配置的操作過程

    Partial Reconfiguration(部分重配置)在現(xiàn)在的FPGA應(yīng)用中越來越常見,我們這次的教程以Project模式為例來說明部分重配置的操作過程
    的頭像 發(fā)表于 07-05 15:28 ?4052次閱讀
    FPGA應(yīng)用中部分重配置的<b class='flag-5'>操作過程</b>

    在線快速修復(fù)終聚釜攪拌器軸磨損的現(xiàn)場操作過程

    在線快速修復(fù)終聚釜攪拌器軸磨損的現(xiàn)場操作過程
    發(fā)表于 12-06 15:17 ?5次下載

    磐石測控:深圳扭轉(zhuǎn)試驗機(jī)操作過程是什么樣的?

    磐石測控:深圳扭轉(zhuǎn)試驗機(jī)操作過程是什么樣的?
    的頭像 發(fā)表于 10-20 11:17 ?826次閱讀
    磐石測控:深圳扭轉(zhuǎn)試驗機(jī)<b class='flag-5'>操作過程</b>是什么樣的?