@ohos.data.dataAbility (DataAbility Predicates)
The DataAbility module provides APIs to create predicates for querying data from relational database (RDB) stores.
NOTE
The initial APIs of this module are supported since API version 7. Newly added APIs will be marked with a superscript to indicate their earliest API version.
Modules to Import
import dataAbility from '@ohos.data.dataAbility';
dataAbility.createRdbPredicates
createRdbPredicates(name: string, dataAbilityPredicates: DataAbilityPredicates): rdb.RdbPredicates
Creates an RdbPredicates object with a table name and a DataAbilityPredicates object.
System capability: SystemCapability.DistributedDataManager.DataShare.Core
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
name | string | Yes | Name of a database table. |
dataAbilityPredicates | DataAbilityPredicates | Yes | DataAbilityPredicates object. |
Return value
Type | Description |
---|---|
rdb.RdbPredicates | RdbPredicates object created. |
Example
let dataAbilityPredicates = new dataAbility.DataAbilityPredicates()
dataAbilityPredicates.equalTo("NAME", "Rose")
// EMPLOYEE is a table created in a relational database.
let predicates = dataAbility.createRdbPredicates("EMPLOYEE", dataAbilityPredicates)
DataAbilityPredicates
Provides predicates for implementing diverse query methods.
Initialization
let dataAbilityPredicates = new dataAbility.DataAbilityPredicates()
equalTo
equalTo(field: string, value: ValueType): DataAbilityPredicates
Sets a DataAbilityPredicates object to match the field with data type ValueType and value equals to the specified value.
This API is similar to the SQL equal to (=) operator.
System capability: SystemCapability.DistributedDataManager.DataShare.Core
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
field | string | Yes | Column name in the table. |
value | ValueType | Yes | Value to match the DataAbilityPredicates. |
Return value
Type | Description |
---|---|
DataAbilityPredicates | DataAbilityPredicates object that matches the specified field. |
Example
dataAbilityPredicates.equalTo("NAME", "lisi")
notEqualTo
notEqualTo(field: string, value: ValueType): DataAbilityPredicates
Sets a DataAbilityPredicates object to match the field with data type ValueType and value not equal to the specified value.
This API is similar to the SQL not equal (!=) operator.
System capability: SystemCapability.DistributedDataManager.DataShare.Core
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
field | string | Yes | Column name in the table. |
value | ValueType | Yes | Value to match the DataAbilityPredicates. |
Return value
Type | Description |
---|---|
DataAbilityPredicates | DataAbilityPredicates object that matches the specified field. |
Example
dataAbilityPredicates.notEqualTo("NAME", "lisi")
beginWrap
beginWrap(): DataAbilityPredicates
Adds a left parenthesis to this DataAbilityPredicates. This API is similar to "(" in an SQL statement and must be used with endWrap.
System capability: SystemCapability.DistributedDataManager.DataShare.Core
Return value
Type | Description |
---|---|
DataAbilityPredicates | DataAbilityPredicates object with a left parenthesis. |
Example
dataAbilityPredicates.equalTo("NAME", "lisi")
.beginWrap()
.equalTo("AGE", 18)
.or()
.equalTo("SALARY", 200.5)
.endWrap()
endWrap
endWrap(): DataAbilityPredicates
Adds a right parenthesis to this DataAbilityPredicates. This API is similar to ")" in an SQL statement and must be used with beginWrap.
System capability: SystemCapability.DistributedDataManager.DataShare.Core
Return value
Type | Description |
---|---|
DataAbilityPredicates | DataAbilityPredicates object with a right parenthesis. |
Example
dataAbilityPredicates.equalTo("NAME", "lisi")
.beginWrap()
.equalTo("AGE", 18)
.or()
.equalTo("SALARY", 200.5)
.endWrap()
or
or(): DataAbilityPredicates
Adds the OR condition to this DataAbilityPredicates.
This API is similar to the SQL or operator.
System capability: SystemCapability.DistributedDataManager.DataShare.Core
Return value
Type | Description |
---|---|
DataAbilityPredicates | DataAbilityPredicates object with the OR condition. |
Example
dataAbilityPredicates.equalTo("NAME", "Lisa")
.or()
.equalTo("NAME", "Rose")
and
and(): DataAbilityPredicates
Adds the AND condition to this DataAbilityPredicates.
System capability: SystemCapability.DistributedDataManager.DataShare.Core
Return value
Type | Description |
---|---|
DataAbilityPredicates | DataAbilityPredicates object with the AND condition. |
Example
dataAbilityPredicates.equalTo("NAME", "Lisa")
.and()
.equalTo("SALARY", 200.5)
contains
contains(field: string, value: string): DataAbilityPredicates
Sets a DataAbilityPredicates object to match a string containing the specified value.
System capability: SystemCapability.DistributedDataManager.DataShare.Core
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
field | string | Yes | Column name in the table. |
value | string | Yes | Value to match the DataAbilityPredicates. |
Return value
Type | Description |
---|---|
DataAbilityPredicates | DataAbilityPredicates object that matches the specified field. |
Example
dataAbilityPredicates.contains("NAME", "os")
beginsWith
beginsWith(field: string, value: string): DataAbilityPredicates
Sets a DataAbilityPredicates object to match a string that starts with the specified value.
This API is similar to the SQL modulo (%) operator.
System capability: SystemCapability.DistributedDataManager.DataShare.Core
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
field | string | Yes | Column name in the table. |
value | string | Yes | Value to match the DataAbilityPredicates. |
Return value
Type | Description |
---|---|
DataAbilityPredicates | DataAbilityPredicates object that matches the specified field. |
Example
dataAbilityPredicates.beginsWith("NAME", "os")
endsWith
endsWith(field: string, value: string): DataAbilityPredicates
Sets a DataAbilityPredicates object to match a string that ends with the specified value.
This API is similar to the SQL equal to (=) operator.
System capability: SystemCapability.DistributedDataManager.DataShare.Core
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
field | string | Yes | Column name in the table. |
value | string | Yes | Value to match the DataAbilityPredicates. |
Return value
Type | Description |
---|---|
DataAbilityPredicates | DataAbilityPredicates object that matches the specified field. |
Example
dataAbilityPredicates.endsWith("NAME", "se")
isNull
isNull(field: string): DataAbilityPredicates
Sets a DataAbilityPredicates object to match the field whose value is null.
System capability: SystemCapability.DistributedDataManager.DataShare.Core
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
field | string | Yes | Column name in the table. |
Return value
Type | Description |
---|---|
DataAbilityPredicates | DataAbilityPredicates object that matches the specified field. |
Example
dataAbilityPredicates.isNull("NAME")
isNotNull
isNotNull(field: string): DataAbilityPredicates
Sets a DataAbilityPredicates object to match the field whose value is not null.
System capability: SystemCapability.DistributedDataManager.DataShare.Core
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
field | string | Yes | Column name in the table. |
Return value
Type | Description |
---|---|
DataAbilityPredicates | DataAbilityPredicates object that matches the specified field. |
Example
dataAbilityPredicates.isNotNull("NAME")
like
like(field: string, value: string): DataAbilityPredicates
Sets a DataAbilityPredicates object to match a string that is similar to the specified value.
This API is similar to the SQL like statement.
System capability: SystemCapability.DistributedDataManager.DataShare.Core
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
field | string | Yes | Column name in the table. |
value | string | Yes | Value to match the DataAbilityPredicates. |
Return value
Type | Description |
---|---|
DataAbilityPredicates | DataAbilityPredicates object that matches the specified field. |
Example
dataAbilityPredicates.like("NAME", "%os%")
glob
glob(field: string, value: string): DataAbilityPredicates
Sets a DataAbilityPredicates object to match the specified string. Different from like, the input parameters of this API are case-sensitive.
System capability: SystemCapability.DistributedDataManager.DataShare.Core
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
field | string | Yes | Column name in the table. |
value | string | Yes | Value to match the DataAbilityPredicates. |
Return value
Type | Description |
---|---|
DataAbilityPredicates | DataAbilityPredicates object that matches the specified field. |
Example
dataAbilityPredicates.glob("NAME", "?h*g")
// Only the data with name of Lisa matches the specified predicate.
dataAbilityPredicates.glob("NAME", "Lisa")
// Only the data with name of lisa matches the specified predicate.
dataAbilityPredicates.glob("NAME", "lisa")
between
between(field: string, low: ValueType, high: ValueType): DataAbilityPredicates
Sets a DataAbilityPredicates object to match a field whose data type is ValueType and value is within the specified range.
System capability: SystemCapability.DistributedDataManager.DataShare.Core
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
field | string | Yes | Column name in the table. |
low | ValueType | Yes | Minimum value to match the DataAbilityPredicates. |
high | ValueType | Yes | Maximum value to match the DataAbilityPredicates. |
Return value
Type | Description |
---|---|
DataAbilityPredicates | DataAbilityPredicates object that matches the specified field. |
Example
dataAbilityPredicates.between("AGE", 10, 50)
notBetween
notBetween(field: string, low: ValueType, high: ValueType): DataAbilityPredicates
Sets a DataAbilityPredicates object to match the field with data type ValueType and value out of the specified range.
System capability: SystemCapability.DistributedDataManager.DataShare.Core
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
field | string | Yes | Column name in the table. |
low | ValueType | Yes | Minimum value to match the DataAbilityPredicates. |
high | ValueType | Yes | Maximum value to match the DataAbilityPredicates. |
Return value
Type | Description |
---|---|
DataAbilityPredicates | DataAbilityPredicates object that matches the specified field. |
Example
dataAbilityPredicates.notBetween("AGE", 10, 50)
greaterThan
greaterThan(field: string, value: ValueType): DataAbilityPredicates
Sets a DataAbilityPredicates object to match the field with data type ValueType and value greater than the specified value.
System capability: SystemCapability.DistributedDataManager.DataShare.Core
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
field | string | Yes | Column name in the table. |
value | ValueType | Yes | Value to match the DataAbilityPredicates. |
Return value
Type | Description |
---|---|
DataAbilityPredicates | DataAbilityPredicates object that matches the specified field. |
Example
dataAbilityPredicates.greaterThan("AGE", 18)
lessThan
lessThan(field: string, value: ValueType): DataAbilityPredicates
Sets a DataAbilityPredicates object to match the field with data type ValueType and value less than the specified value.
System capability: SystemCapability.DistributedDataManager.DataShare.Core
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
field | string | Yes | Column name in the table. |
value | ValueType | Yes | Value to match the DataAbilityPredicates. |
Return value
Type | Description |
---|---|
DataAbilityPredicates | DataAbilityPredicates object that matches the specified field. |
Example
dataAbilityPredicates.lessThan("AGE", 20)
greaterThanOrEqualTo
greaterThanOrEqualTo(field: string, value: ValueType): DataAbilityPredicates
Sets a DataAbilityPredicates object to match the field with data type ValueType and value greater than or equal to the specified value.
System capability: SystemCapability.DistributedDataManager.DataShare.Core
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
field | string | Yes | Column name in the table. |
value | ValueType | Yes | Value to match the DataAbilityPredicates. |
Return value
Type | Description |
---|---|
DataAbilityPredicates | DataAbilityPredicates object that matches the specified field. |
Example
dataAbilityPredicates.greaterThanOrEqualTo("AGE", 18)
lessThanOrEqualTo
lessThanOrEqualTo(field: string, value: ValueType): DataAbilityPredicates
Sets a DataAbilityPredicates object to match the field with data type ValueType and value less than or equal to the specified value.
System capability: SystemCapability.DistributedDataManager.DataShare.Core
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
field | string | Yes | Column name in the table. |
value | ValueType | Yes | Value to match the DataAbilityPredicates. |
Return value
Type | Description |
---|---|
DataAbilityPredicates | DataAbilityPredicates object that matches the specified field. |
Example
dataAbilityPredicates.lessThanOrEqualTo("AGE", 20)
orderByAsc
orderByAsc(field: string): DataAbilityPredicates
Sets a DataAbilityPredicates object to sort the data records in ascending order. When there are multiple orderByAscs, the first orderByAsc used has the highest priority.
System capability: SystemCapability.DistributedDataManager.DataShare.Core
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
field | string | Yes | Column name in the table. |
Return value
Type | Description |
---|---|
DataAbilityPredicates | DataAbilityPredicates object that matches the specified field. |
Example
// Sort data by name first; for the records with the same name, sort them by age; for the records with the same name and age, sort them by salary in ascending order.
dataAbilityPredicates.orderByAsc("NAME").orderByAsc("AGE").orderByAsc("SALARY")
orderByDesc
orderByDesc(field: string): DataAbilityPredicates
Sets a DataAbilityPredicates object to sort the data records in descending order. When there are multiple orderByDescs, the first orderByDesc used has the highest priority.
System capability: SystemCapability.DistributedDataManager.DataShare.Core
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
field | string | Yes | Column name in the table. |
Return value
Type | Description |
---|---|
DataAbilityPredicates | DataAbilityPredicates object that matches the specified field. |
Example
// Sort the data by age first. For the data records with the same age, sort them by salary.
dataAbilityPredicates.orderByDesc("AGE").orderByDesc("SALARY")
distinct
distinct(): DataAbilityPredicates
Sets a DataAbilityPredicates object to filter out duplicate records.
System capability: SystemCapability.DistributedDataManager.DataShare.Core
Return value
Type | Description |
---|---|
DataAbilityPredicates | DataAbilityPredicates object that can filter out duplicate records. |
Example
dataAbilityPredicates.equalTo("NAME", "Rose").distinct()
limitAs
limitAs(value: number): DataAbilityPredicates
Set a DataAbilityPredicates object to specify the maximum number of records.
System capability: SystemCapability.DistributedDataManager.DataShare.Core
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
value | number | Yes | Maximum number of records. |
Return value
Type | Description |
---|---|
DataAbilityPredicates | DataAbilityPredicates object that specifies the maximum number of records. |
Example
dataAbilityPredicates.equalTo("NAME", "Rose").limitAs(3)
offsetAs
offsetAs(rowOffset: number): DataAbilityPredicates
Sets a DataAbilityPredicates object to specify the start position of the returned result. This API must be used with limitAs.
System capability: SystemCapability.DistributedDataManager.DataShare.Core
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
rowOffset | number | Yes | Number of rows to offset from the beginning. The value is a positive integer. |
Return value
Type | Description |
---|---|
DataAbilityPredicates | DataAbilityPredicates object that specifies the start position of the returned result. |
Example
// Display the three data records following the first three records.
dataAbilityPredicates.equalTo("NAME", "Rose").offsetAs(3).limitAs(3)
groupBy
groupBy(fields: Array<string>): DataAbilityPredicates
Sets a DataAbilityPredicates object to group rows that have the same value into summary rows.
System capability: SystemCapability.DistributedDataManager.DataShare.Core
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
fields | Array<string> | Yes | Names of columns to group. |
Return value
Type | Description |
---|---|
DataAbilityPredicates | DataAbilityPredicates object that groups rows with the same value. |
Example
dataAbilityPredicates.groupBy(["AGE", "NAME"])
indexedBy
indexedBy(field: string): DataAbilityPredicates
Sets a DataAbilityPredicates object to specify the index column. Before calling this API, you need to create an index column.
System capability: SystemCapability.DistributedDataManager.DataShare.Core
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
indexName | string | Yes | Name of the index. |
Return value
Type | Description |
---|---|
DataAbilityPredicates | DataAbilityPredicates object that specifies the index column. |
Example
import rdb from '@ohos.data.rdb'; // Import the module.
import featureAbility from '@ohos.ability.featureAbility';
import dataAbility from '@ohos.data.dataAbility';
let context = getContext(this);
const STORE_CONFIG : rdb.StoreConfig= {
name: 'RdbTest.db', // Database file name.
};
// Table structure: EMPLOYEE (NAME, AGE, SALARY, CODES)
const SQL_CREATE_TABLE = 'CREATE TABLE IF NOT EXISTS EMPLOYEE (ID INTEGER PRIMARY KEY AUTOINCREMENT, NAME TEXT NOT NULL, AGE INTEGER, SALARY REAL, CODES BLOB)'; // SQL statement for creating a data table.
rdb.getRdbStore(this.context, STORE_CONFIG, 3, async (err, store) => {
if (err) {
console.error(`Failed to get RdbStore. Code:${err.code}, message:${err.message}`);
return;
}
console.info('Succeeded in getting RdbStore.');
await store.executeSql(SQL_CREATE_TABLE); // Create a data table.
// Create an index.
const SQL_CREATE_INDEX = 'CREATE INDEX SALARY_INDEX ON EMPLOYEE(SALARY)'
await store.executeSql(SQL_CREATE_INDEX);
// ...
let dataAbilityPredicates = new dataAbility.DataAbilityPredicates()
dataAbilityPredicates.indexedBy("SALARY_INDEX")
// ...
})
in
in(field: string, value: Array<ValueType>): DataAbilityPredicates
Sets a DataAbilityPredicates object to match the field with data type Array<ValueType> and value within the specified range.
System capability: SystemCapability.DistributedDataManager.DataShare.Core
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
field | string | Yes | Column name in the table. |
value | Array<ValueType> | Yes | Array of ValueTypes to match. |
Return value
Type | Description |
---|---|
DataAbilityPredicates | DataAbilityPredicates object that matches the specified field. |
Example
dataAbilityPredicates.in("AGE", [18, 20])
notIn
notIn(field: string, value: Array<ValueType>): DataAbilityPredicates
Sets a DataAbilityPredicates object to match the field with data type Array<ValueType> and value out of the specified range.
System capability: SystemCapability.DistributedDataManager.DataShare.Core
Parameters
Name | Type | Mandatory | Description |
---|---|---|---|
field | string | Yes | Column name in the table. |
value | Array<ValueType> | Yes | Array of ValueTypes to match. |
Return value
Type | Description |
---|---|
DataAbilityPredicates | DataAbilityPredicates object that matches the specified field. |
Example
dataAbilityPredicates.notIn("NAME", ["Lisa", "Rose"])
ValueType
Enumerates the value types.
System capability: SystemCapability.DistributedDataManager.DataShare.Core
Type | Description |
---|---|
number | The value is a number. |
string | The value is a string. |
boolean | The value is of Boolean type. |