1. 前言导读
在上集文章中,已经学习了如何将联系人信息保存到数据库,这集来实现数据库查询操作
关系型数据库(Relational Database,RDB)是一种基于关系模型来管理数据的数据库。关系型数据库基于SQLite组件提供了一套完整的对本地数据库进行管理的机制,对外提供了一系列的增、删、改、查等接口,也可以直接运行用户输入的SQL语句来满足复杂的场景需要。不支持Sendable跨线程传递。
为保证插入并读取数据成功,建议一条数据不要超过2M。超出该大小,插入成功,读取失败。
2. 官方文档指南
以下是关系型数据库持久化功能的相关接口,大部分为异步接口。异步接口均有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,否则会查询失败
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
predicates | RdbPredicates | 是 | RdbPredicates的实例对象指定的查询条件。 |
columns | Array | 是 | 表示要查询的列。如果值为空,则查询应用于所有列。 |
callback | AsyncCallback | 是 | 指定回调函数。如果操作成功,则返回ResultSet对象。 |
- 指定查询条件
RdbPredicates
语法:
constructor(name: string)
构造函数。
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
name | string | 是 | 数据库表名。 |
//Contacts_Table为表名
let predicates = new relationalStore.RdbPredicates('Contacts_Table');
//查询条件,可选项,没有可以不用加
// predicates.equalTo('ct_username','wangwu')
- 调用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()
});