国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

HarmonyOS4.0系統(tǒng)性深入開發(fā)25訪問DataAbility

這篇具有很好參考價(jià)值的文章主要介紹了HarmonyOS4.0系統(tǒng)性深入開發(fā)25訪問DataAbility。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

訪問DataAbility

訪問DataAbility需導(dǎo)入基礎(chǔ)依賴包,以及獲取與DataAbility子模塊通信的URI字符串。

其中,基礎(chǔ)依賴包包括:

  • @ohos.ability.featureAbility
  • @ohos.data.dataAbility
  • @ohos.data.rdb

訪問DataAbility的示例代碼如下:

  1. 創(chuàng)建工具接口類對象。

    // 作為參數(shù)傳遞的URI,與config中定義的URI的區(qū)別是多了一個(gè)"/",有三個(gè)"/"
    import featureAbility from '@ohos.ability.featureAbility'
    import ohos_data_ability from '@ohos.data.dataAbility'
    import ohos_data_rdb from '@ohos.data.rdb'
    
    let urivar = "dataability:///com.ix.DataAbility"
    let DAHelper = featureAbility.acquireDataAbilityHelper(urivar);
    
  2. 構(gòu)建數(shù)據(jù)庫相關(guān)的RDB數(shù)據(jù)。

    let valuesBucket = {"name": "gaolu"}
    let da = new ohos_data_ability.DataAbilityPredicates()
    let valArray =new Array("value1");
    let cars = new Array({"batchInsert1" : "value1",});
    

    注:關(guān)于DataAbilityPredicates的詳細(xì)內(nèi)容,請參考DataAbility謂詞。

  3. 調(diào)用insert方法向指定的DataAbility子模塊插入數(shù)據(jù)。

    // callback方式調(diào)用:
    DAHelper.insert(
      urivar,
      valuesBucket,
      (error, data) => {
        console.info("DAHelper insert result: " + data)
      }
    );
    
    // promise方式調(diào)用(await需要在async方法中使用):
    let datainsert = await DAHelper.insert(urivar, valuesBucket).then((data) => {
      console.info("insert success.");
    }).catch((error) => {
      console.error("insert failed.");
    });
    
  4. 調(diào)用delete方法刪除DataAbility子模塊中指定的數(shù)據(jù)。

    // callback方式調(diào)用:
    DAHelper.delete(
      urivar,
      da,
      (error, data) => {
        console.info("DAHelper delete result: " + data)
      }
    );
    
    // promise方式調(diào)用(await需要在async方法中使用):
    let datadelete = await DAHelper.delete(
      urivar,
      da,
    );
    
  5. 調(diào)用update方法更新指定DataAbility子模塊中的數(shù)據(jù)。

    // callback方式調(diào)用:
    DAHelper.update(
      urivar,
      valuesBucket,
      da,
      (error, data) => {
        console.info("DAHelper update result: " + data)
      }
    );
    
    // promise方式調(diào)用(await需要在async方法中使用):
    let dataupdate = await DAHelper.update(
      urivar,
      valuesBucket,
      da,
    );
    
  6. 調(diào)用query方法在指定的DataAbility子模塊中查找數(shù)據(jù)。

    // callback方式調(diào)用:
    DAHelper.query(
      urivar,
      valArray,
      da,
      (error, data) => {
        console.info("DAHelper query result: " + data)
      }
    );
    
    // promise方式調(diào)用(await需要在async方法中使用):
    let dataupdate = await DAHelper.update(
      urivar,
      valuesBucket,
      da,
    );
    
  7. 調(diào)用batchInsert方法向指定的DataAbility子模塊批量插入數(shù)據(jù)。

    // callback方式調(diào)用:
    DAHelper.query(
      urivar,
      valArray,
      da,
      (error, data) => {
        console.info("DAHelper query result: " + data)
      }
    );
    
    // promise方式調(diào)用(await需要在async方法中使用):
    let dataquery = await DAHelper.query(
      urivar,
      valArray,
      da
    );
    
  8. 調(diào)用executeBatch方法向指定的DataAbility子模塊進(jìn)行數(shù)據(jù)的批量處理。

    // callback方式調(diào)用:
    DAHelper.executeBatch(
      urivar,
      [
        {
          uri: urivar,
          type: featureAbility.DataAbilityOperationType.TYPE_INSERT,
          valuesBucket: {"executeBatch" : "value1",},
          predicates: da,
          expectedCount:0,
          predicatesBackReferences: null,
          interrupted:true,
        }
      ],
      (error, data) => {
        console.info("DAHelper executeBatch result: " + data)
      }
    );
    
    // promise方式調(diào)用(await需要在async方法中使用):
    let dataexecuteBatch = await DAHelper.executeBatch(
      urivar,
      [
        {
          uri: urivar,
          type: featureAbility.DataAbilityOperationType.TYPE_INSERT,
          valuesBucket:
          {
            "executeBatch" : "value1",
          },
          predicates: da,
          expectedCount:0,
          predicatesBackReferences: null,
          interrupted:true,
        }
      ]
    );
    

DataAbility的客戶端的接口是由工具接口類對象DataAbilityHelper向外提供,相關(guān)接口可參考DataAbilityHelper模塊。

DataAbility權(quán)限控制

DataAbility提供數(shù)據(jù)服務(wù),并不是所有的Ability都有權(quán)限讀寫它,DataAbility有一套權(quán)限控制機(jī)制來保證數(shù)據(jù)安全。分為靜態(tài)權(quán)限控制和動態(tài)權(quán)限控制兩部分。

靜態(tài)權(quán)限控制

DataAbility作為服務(wù)端,在被拉起的時(shí)候,會根據(jù)config.json里面配置的權(quán)限來進(jìn)行校驗(yàn),有"readPermission"、"writePermission"和"Permission"三個(gè)配置項(xiàng),可以不配或者為空。示例如下:

"abilities": [{
  "srcPath": "DataAbility",
  "name": ".DataAbility",
  "icon": "$media:icon",
  "srcLanguage": "ets",
  "description": "$string:description_dataability",
  "type": "data",
  "visible": true,
  "uri": "dataability://ohos.samples.etsdataability.DataAbility",
  "readPermission":"ohos.permission.READ_CONTACTS",
  "writePermission":"ohos.permission.WRITE_CONTACTS"
}]

客戶端在拉起DataAbility的時(shí)候,需要校驗(yàn)客戶端是否有權(quán)限拉起該DataAbility??蛻舳说臋?quán)限配置在config.json配置文件的"module"對象的"reqPermissions"對象中,示例如下:

{
  "module": {
    "reqPermissions":{
      {
        "name":"ohos.permission.READ_CONTACTS"
      },
      {
        "name":"ohos.permission.WRITE_CONTACTS"
      }
    }
  }
}

動態(tài)權(quán)限控制

靜態(tài)權(quán)限校驗(yàn)只能控制某個(gè)DataAbility是否能被另一個(gè)Ability或應(yīng)用拉起,無法精確校驗(yàn)每個(gè)讀寫接口的權(quán)限,因?yàn)槔餌ataAbility的時(shí)候,還不知道應(yīng)用是否需要讀寫它的數(shù)據(jù)。

動態(tài)權(quán)限控制是校驗(yàn)每個(gè)數(shù)據(jù)操作的接口是否有對應(yīng)的權(quán)限??蛻舳苏{(diào)用數(shù)據(jù)操作接口所需的權(quán)限如下表所示。

表1 接口對應(yīng)的讀寫權(quán)限配置

需要配置讀權(quán)限的接口 需要配置寫權(quán)限的接口 據(jù)實(shí)際操作配置讀寫權(quán)限的接口
query、normalizeUri、denormalizeUri、openfile(傳入mode有’r’) insert、batchInsert、delete、update、openfile(傳入mode有’w’) executeBatch

對于需要配置讀權(quán)限的接口,服務(wù)端需要配置readPermission,客戶端必須申請相應(yīng)的讀權(quán)限才能調(diào)用相關(guān)的接口。

對于需要配置寫權(quán)限的接口,服務(wù)端需要配置writePermission,客戶端必須申請相應(yīng)的寫權(quán)限才能調(diào)用相關(guān)的接口。文章來源地址http://www.zghlxwxcb.cn/news/detail-822939.html

到了這里,關(guān)于HarmonyOS4.0系統(tǒng)性深入開發(fā)25訪問DataAbility的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • HarmonyOS4.0系統(tǒng)性深入開發(fā)34柵格布局(GridRow/GridCol)

    HarmonyOS4.0系統(tǒng)性深入開發(fā)34柵格布局(GridRow/GridCol)

    柵格布局是一種通用的輔助定位工具,對移動設(shè)備的界面設(shè)計(jì)有較好的借鑒作用。主要優(yōu)勢包括: 提供可循的規(guī)律:柵格布局可以為布局提供規(guī)律性的結(jié)構(gòu),解決多尺寸多設(shè)備的動態(tài)布局問題。通過將頁面劃分為等寬的列數(shù)和行數(shù),可以方便地對頁面元素進(jìn)行定位和排版。

    2024年02月21日
    瀏覽(28)
  • 系統(tǒng)性認(rèn)知網(wǎng)絡(luò)安全

    系統(tǒng)性認(rèn)知網(wǎng)絡(luò)安全

    前言: 本文旨在介紹網(wǎng)絡(luò)安全相關(guān)基礎(chǔ)知識體系和框架 目錄 一.信息安全概述 信息安全研究內(nèi)容及關(guān)系 ?信息安全的基本要求 保密性Confidentiality: 完整性Integrity: 可用性Availability: 二.信息安全的發(fā)展 20世紀(jì)60年代: 20世紀(jì)60-70年代: 20世紀(jì)90年代以后: 三.網(wǎng)絡(luò)安全的攻防

    2024年02月08日
    瀏覽(16)
  • 如何系統(tǒng)性的學(xué)習(xí)Python語言

    如何系統(tǒng)性的學(xué)習(xí)Python語言

    零基礎(chǔ)同學(xué)的福音來了,如果你對Python語言的學(xué)習(xí)感興趣,接下來可以由淺入深的了解下Python語言,哪怕你是零基礎(chǔ)的小白也完全可以學(xué)會的,最后也會給大家放出學(xué)習(xí)和實(shí)例相結(jié)合的教程及方法,給到各位同學(xué)系統(tǒng)性的教學(xué),最重要的是免費(fèi),可真謂是學(xué)生黨們的福音呀。

    2024年02月10日
    瀏覽(24)
  • 【系統(tǒng)性】 循序漸進(jìn)學(xué)C++

    【系統(tǒng)性】 循序漸進(jìn)學(xué)C++

    一、環(huán)境配置 1.1.第一個(gè)程序(基本格式) ? ? 模板 1.2注釋 1.3變量 ? 意義:方便管理內(nèi)存空間 ? 方法:數(shù)據(jù)類型 變量名 = 數(shù)字; 1.4常量 1.5 1.6變量命名規(guī)則 二、數(shù)據(jù)類型 ? 目的:給數(shù)據(jù)存分配合適的空間大?。槐苊赓Y源浪費(fèi) 2.1整形 ? 2.2 sizeof 2.3浮點(diǎn)型 ? fl

    2024年03月18日
    瀏覽(99)
  • 【基礎(chǔ)類】—面向?qū)ο箢愊到y(tǒng)性學(xué)習(xí)

    構(gòu)造函數(shù)模擬一個(gè)類 ES6 Class聲明 通過 new 實(shí)例化一個(gè)類 借助構(gòu)造函數(shù)實(shí)現(xiàn)繼承 缺點(diǎn): Parent1的原型上的屬性和方法,并沒有被child所繼承。 總結(jié):只實(shí)現(xiàn)了部分繼承,如果父類的屬性都在構(gòu)造函數(shù)里面,完全可以實(shí)現(xiàn)繼承,如果父類的原型對象上還有方法或?qū)傩?,那么子?/p>

    2024年02月14日
    瀏覽(21)
  • linux與windows系統(tǒng)性能測試

    # 一、Linux系統(tǒng)下的性能測試 ##### 可通過以下命令進(jìn)行安裝。 ##### 如果您使用CentOS、Redhat、Aliyun Linux等操作系統(tǒng),運(yùn)行以下命令 ? ? sudo yum install fio ##### 如果您使用Ubuntu或Debian操作系統(tǒng),運(yùn)行以下命令 ? ? sudo apt-get ?update ? ? sudo apt-get install fio ##### 下面提供一些通用的性能

    2024年04月17日
    瀏覽(27)
  • 【基礎(chǔ)類】—前后端通信類系統(tǒng)性學(xué)習(xí)

    同源策略限制從一個(gè)源加載的文檔或腳本如何與來自另一個(gè)源的資源進(jìn)行交互。這是一個(gè)用于隔離潛在惡意文件的關(guān)鍵的安全機(jī)制。 源:協(xié)議、域名和端口, 默認(rèn)端口是80 三者有一個(gè)不同,即源不同,就是跨域 限制:不是一個(gè)源的文檔,你沒有權(quán)利去操作另一個(gè)源的文檔,

    2024年02月13日
    瀏覽(23)
  • 系統(tǒng)性學(xué)習(xí)vue-組件及腳手架

    系統(tǒng)性學(xué)習(xí)vue-組件及腳手架

    書接上文 Vue腳手架是Vue官方提供的標(biāo)準(zhǔn)化開發(fā)工具(開發(fā)平臺) CLI: command line interface (命令行接口工具) 俗稱腳手架 備注: 如果下載緩慢可以配置npm淘寶鏡像: npm config set registry https://registry.npm.taobao.org Vue腳手架隱藏了所有webpack相關(guān)配置,弱項(xiàng)查看具體的webpack配置,請執(zhí)行 vue ins

    2024年02月02日
    瀏覽(29)
  • 金融——規(guī)避容易造成金融系統(tǒng)性風(fēng)險(xiǎn)的項(xiàng)目

    金融的關(guān)聯(lián)性太強(qiáng),容易造成很多社會問題, 改變,必須建立在有效規(guī)避風(fēng)險(xiǎn)之上 答: 答: 答:我暫時(shí)認(rèn)為,他們都是未來。信用系統(tǒng)是一個(gè)美好的愿望,就像五六十年代理想的共產(chǎn)主義一樣,要走的路還是很遠(yuǎn),我個(gè)人是希望遙遠(yuǎn)的將來能夠?qū)崿F(xiàn),那是多么美麗的未來,

    2024年01月20日
    瀏覽(27)
  • 初識C語言——詳細(xì)入門(系統(tǒng)性學(xué)習(xí)day4)

    初識C語言——詳細(xì)入門(系統(tǒng)性學(xué)習(xí)day4)

    目錄 前言 一、C語言簡單介紹、特點(diǎn)、基本構(gòu)成 簡單介紹: 特點(diǎn): 基本構(gòu)成: 二、認(rèn)識C語言程序 標(biāo)準(zhǔn)格式: 簡單C程序: 三、基本構(gòu)成分類詳細(xì)介紹? ? (1) (2)數(shù)據(jù)類型 計(jì)算機(jī)中常用存儲單位 數(shù)據(jù)類型的取值范圍 打印輸入類型 (3)常量和變量 常量的分類:

    2024年02月08日
    瀏覽(28)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包