鸿蒙Next开发-通讯录app,数据库实现查询联系人信息(五)

1. 前言导读

在上集文章中,已经学习了如何将联系人信息保存到数据库,这集来实现数据库查询操作

关系型数据库(Relational Database,RDB)是一种基于关系模型来管理数据的数据库。关系型数据库基于SQLite组件提供了一套完整的对本地数据库进行管理的机制,对外提供了一系列的增、删、改、查等接口,也可以直接运行用户输入的SQL语句来满足复杂的场景需要。不支持Sendable跨线程传递。
为保证插入并读取数据成功,建议一条数据不要超过2M。超出该大小,插入成功,读取失败。

2. 官方文档指南

  1. https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-data-relationalstore-V5#query10

以下是关系型数据库持久化功能的相关接口,大部分为异步接口。异步接口均有callback和Promise两种返回形式,下表均以callback形式为例,更多接口及使用方式请见关系型数据库

接口名称描述
getRdbStore(context: Context, config: StoreConfig, callback: AsyncCallback)获得一个RdbStore,操作关系型数据库,用户可以根据自己的需求配置RdbStore的参数,然后通过RdbStore调用相关接口可以执行相关的数据操作。
executeSql(sql: string, bindArgs: Array, callback: AsyncCallback)执行包含指定参数但不返回值的SQL语句。
insert(table: string, values: ValuesBucket, callback: AsyncCallback)向目标表中插入一行数据。
update(values: ValuesBucket, predicates: RdbPredicates, callback: AsyncCallback)根据predicates的指定实例对象更新数据库中的数据。
delete(predicates: RdB Predicates, callback: AsyncCallback)根据predicates的指定实例对象从数据库删除数据。
query(predicates: RdbPredicates, columns: Array, callback: AsyncCallback)根据指定条件查询数据库中的数据。
deleteRdbStore(context: Context, name: string, callback: AsyncCallback)删除数据库。

3. 开发步骤

query
query(predicates: RdbPredicates, columns: Array, callback: AsyncCallback):void

根据指定条件查询数据库中的数据,使用callback异步回调。由于共享内存大小限制为2Mb,因此单条数据的大小需小于2Mb,否则会查询失败

参数:

参数名类型必填说明
predicatesRdbPredicatesRdbPredicates的实例对象指定的查询条件。
columnsArray表示要查询的列。如果值为空,则查询应用于所有列。
callbackAsyncCallback指定回调函数。如果操作成功,则返回ResultSet对象。
  1. 指定查询条件 RdbPredicates

语法:

constructor(name: string)
构造函数。

参数:

参数名类型必填说明
namestring数据库表名。

  //Contacts_Table为表名
  let predicates = new relationalStore.RdbPredicates('Contacts_Table');
    //查询条件,可选项,没有可以不用加
    // predicates.equalTo('ct_username','wangwu')
  1. 调用query() 接口查询
storeDb?.query(predicates, ['contacts_id', 'ct_username', 'ct_mobile', 'ct_bg_color'],
      (err: BusinessError, resultSet) => {
        if (err) {
          console.error('--------------', `Failed to query data. Code:${err.code}, message:${err.message}`);
          return;
        }

        while (resultSet.goToNextRow()) {
          const contacts_id = resultSet.getLong(resultSet.getColumnIndex('contacts_id'));
          const ct_username = resultSet.getString(resultSet.getColumnIndex('ct_username'));
          const ct_mobile = resultSet.getString(resultSet.getColumnIndex('ct_mobile'));
          const ct_bg_color = resultSet.getString(resultSet.getColumnIndex('ct_bg_color'));
          //打印
          console.info('--------------', ` ct_username:${ct_username}`);
          console.info('--------------', ` ct_mobile:${ct_mobile}`);
        }

        // 释放数据集的内存
        resultSet.close()

      });
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

浩宇软件开发

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值