• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# @ohos.data.dataSharePredicates (数据共享谓词)
2<!--Kit: ArkData-->
3<!--Subsystem: DistributedDataManager-->
4<!--Owner: @woodenarow-->
5<!--Designer: @woodenarow; @xuelei3-->
6<!--Tester: @chenwan188; @logic42-->
7<!--Adviser: @ge-yafang-->
8
9**谓词(DataSharePredicates)** 是开发者通过DataShare查询数据库中的数据所使用的筛选条件,经常被应用在更新数据、删除数据和查询数据中。
10
11谓词的接口函数与数据库的筛选条件一一对应,开发者在使用前需了解数据库相关知识。
12
13谓词(DataSharePredicates)的使用场景如下:
14
15- 用于在媒体文件管理服务作为检索条件使用,参考[相册管理模块检索条件](../apis-media-library-kit/arkts-apis-photoAccessHelper-i.md#fetchoptions)。此种场景下,开发者无需关注数据库类型。
16
17<!--Del-->
18- 用于调用[关系型数据库](js-apis-data-relationalStore-sys.md)和[键值型数据库](js-apis-distributedKVStore-sys.md)系统接口时的检索条件使用。此种场景下,开发者根据使用的数据库类型参考对应的谓词使用方法。
19<!--DelEnd-->
20
21> **说明:**
22>
23> - 本模块首批接口从API version 10开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
24>
25> - 本模块接口仅可在Stage模型下使用。
26
27
28
29## 导入模块
30
31```ts
32import { dataSharePredicates } from '@kit.ArkData';
33```
34
35## DataSharePredicates
36提供用于不同实现不同查询方法的数据共享谓词。该类型不是多线程安全的,如果应用中存在多线程同时操作该类派生出的实例,注意加锁保护。
37
38### equalTo<sup>10+</sup>
39
40equalTo(field: string, value: ValueType): DataSharePredicates
41
42该接口用于配置谓词以匹配值等于指定值的字段。
43
44目前仅关系型数据库及键值型数据库支持该谓词。
45
46**系统能力:**  SystemCapability.DistributedDataManager.DataShare.Core
47
48**原子化服务API:**  从API version 20开始,该接口支持在原子化服务中使用。
49
50**参数:**
51
52| 参数名 | 类型                                                | 必填 | 说明                   |
53| ------ | --------------------------------------------------- | ---- | ---------------------- |
54| field  | string                                              | 是   | 数据库表中的列名。</br>field为undefined或者null时,此次调用接口配置的谓词无效。     |
55| value  | [ValueType](js-apis-data-valuesBucket.md#valuetype) | 是   | 指示要与谓词匹配的值。</br>value为undefined或者null时,此次调用接口配置的谓词无效。  |
56
57**返回值:**
58
59| 类型                                        | 说明                       |
60| ------------------------------------------- | -------------------------- |
61| [DataSharePredicates](#datasharepredicates) | 返回与指定字段匹配的谓词。 |
62
63**示例:**
64
65```ts
66let predicates = new dataSharePredicates.DataSharePredicates();
67predicates.equalTo("NAME", "Rose");
68```
69
70
71### and<sup>10+</sup>
72
73and(): DataSharePredicates
74
75该接口用于将和条件添加到谓词中。
76
77目前仅关系型数据库及键值型数据库支持该谓词。
78
79**系统能力:**  SystemCapability.DistributedDataManager.DataShare.Core
80
81**原子化服务API:**  从API version 20开始,该接口支持在原子化服务中使用。
82
83**返回值:**
84
85| 类型                                        | 说明                   |
86| ------------------------------------------- | ---------------------- |
87| [DataSharePredicates](#datasharepredicates) | 返回带有和条件的谓词。 |
88
89**示例:**
90
91```ts
92let predicates = new dataSharePredicates.DataSharePredicates();
93predicates.equalTo("NAME", "lisi")
94    .and()
95    .equalTo("SALARY", 200.5);
96```
97
98### orderByAsc<sup>10+</sup>
99
100orderByAsc(field: string): DataSharePredicates
101
102该接口用于配置谓词以匹配其值按升序排序的列。
103
104目前仅关系型数据库及键值型数据库支持该谓词。
105
106**系统能力:**  SystemCapability.DistributedDataManager.DataShare.Core
107
108**原子化服务API:**  从API version 20开始,该接口支持在原子化服务中使用。
109
110**参数:**
111
112| 参数名 | 类型   | 必填 | 说明               |
113| ------ | ------ | ---- | ------------------ |
114| field  | string | 是   | 数据库表中的列名。 </br>field为undefined或者null时,此次调用接口配置的谓词无效。 |
115
116**返回值:**
117
118| 类型                                        | 说明                       |
119| ------------------------------------------- | -------------------------- |
120| [DataSharePredicates](#datasharepredicates) | 返回与指定字段匹配的谓词。 |
121
122**示例:**
123
124```ts
125let predicates = new dataSharePredicates.DataSharePredicates();
126predicates.orderByAsc("AGE");
127```
128
129### orderByDesc<sup>10+</sup>
130
131orderByDesc(field: string): DataSharePredicates
132
133该接口用于配置谓词以匹配其值按降序排序的列。
134
135目前仅关系型数据库及键值型数据库支持该谓词。
136
137**系统能力:**  SystemCapability.DistributedDataManager.DataShare.Core
138
139**原子化服务API:**  从API version 20开始,该接口支持在原子化服务中使用。
140
141**参数:**
142
143| 参数名 | 类型   | 必填 | 说明               |
144| ------ | ------ | ---- | ------------------ |
145| field  | string | 是   | 数据库表中的列名。</br>field为undefined或者null时,此次调用接口配置的谓词无效。  |
146
147**返回值:**
148
149| 类型                                        | 说明                       |
150| ------------------------------------------- | -------------------------- |
151| [DataSharePredicates](#datasharepredicates) | 返回与指定字段匹配的谓词。 |
152
153**示例:**
154
155```ts
156let predicates = new dataSharePredicates.DataSharePredicates();
157predicates.orderByDesc("AGE");
158```
159
160### limit<sup>10+</sup>
161
162limit(total: number, offset: number): DataSharePredicates
163
164该接口用于配置谓词以指定结果数和起始位置。
165
166目前仅关系型数据库及键值型数据库支持该谓词。
167
168**系统能力:**  SystemCapability.DistributedDataManager.DataShare.Core
169
170**原子化服务API:**  从API version 20开始,该接口支持在原子化服务中使用。
171
172**参数:**
173
174| 参数名   | 类型   | 必填 | 说明           |
175| -------- | ------ | ---- | -------------- |
176| total    | number | 是   | 最大数据记录数。</br>当使用键值型数据库且total为undefined或null时,会限制最大记录数为0。</br>当使用关系型数据库且total为undefined或null时,不会限制最大记录数。</br>当使用键值型数据库时,取值范围参考[键值型数据库limit接口](./js-apis-distributedKVStore.md#limit)中的total参数说明。</br>当使用关系型数据库时,取值范围参考[关系型数据库limitAs接口](arkts-apis-data-relationalStore-RdbPredicates.md#limitas)中的value参数说明。|
177| offset | number | 是   | 指定查询结果的起始位置。</br>当offset为undefined或null时,起始位置为结果集的最前端。</br>当使用键值型数据库时,取值范围参考[键值型数据库limit接口](./js-apis-distributedKVStore.md#limit)中的offset参数说明。</br>当使用关系型数据库时,取值范围参考[关系型数据库offsetAs接口](arkts-apis-data-relationalStore-RdbPredicates.md#offsetas)中的rowOffset参数说明。|
178
179**返回值:**
180
181| 类型                                        | 说明                       |
182| ------------------------------------------- | -------------------------- |
183| [DataSharePredicates](#datasharepredicates) | 返回与指定字段匹配的谓词。 |
184
185**示例:**
186
187```ts
188let predicates = new dataSharePredicates.DataSharePredicates();
189predicates.equalTo("NAME", "Rose").limit(10, 3);
190```
191
192### in<sup>10+</sup>
193
194in(field: string, value: Array&lt;ValueType&gt;): DataSharePredicates
195
196该接口用于配置谓词以匹配值在指定范围内的字段。
197
198目前仅关系型数据库及键值型数据库支持该谓词。
199
200**系统能力:**  SystemCapability.DistributedDataManager.DataShare.Core
201
202**原子化服务API:**  从API version 20开始,该接口支持在原子化服务中使用。
203
204**参数:**
205
206| 参数名  | 类型             | 必填 | 说明                                    |
207| ------- | ---------------- | ---- | --------------------------------------- |
208| field   | string           | 是 | 数据库表中的列名。</br>field为undefined或者null时,此次调用接口配置的谓词无效。                   |
209| value | Array&lt;[ValueType](js-apis-data-valuesBucket.md#valuetype)&gt; | 是   | 以ValueType型数组形式指定的要匹配的值。 |
210
211**返回值:**
212
213| 类型                                        | 说明                       |
214| ------------------------------------------- | -------------------------- |
215| [DataSharePredicates](#datasharepredicates) | 返回与指定字段匹配的谓词。 |
216
217**示例:**
218
219```ts
220let predicates = new dataSharePredicates.DataSharePredicates();
221predicates.in("AGE", [18, 20]);
222```