• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# @ohos.data.dataShareResultSet (数据共享结果集)(系统接口)
2
3**结果集(DataShareResultSet)** 可提供访问由查询数据库生成的结果集的相关方法,根据提供的行数,查询相应的值,也可查询指定数据类型的值。
4
5> **说明:**
6>
7> - 本模块首批接口从API version 9开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
8>
9> - 本模块接口为系统接口。
10>
11> - 本模块接口仅可在Stage模型下使用。
12>
13> - 数据共享结果集在全系统最多同时存在32个,使用完及时释放。
14
15## 导入模块
16
17```ts
18import { DataShareResultSet } from '@kit.ArkData';
19```
20
21## 使用说明
22
23需要通过调用[query](js-apis-data-dataShare-sys.md#query)接口获取DataShareResultSet对象。
24
25```ts
26import { AbilityConstant, UIAbility, Want } from '@kit.AbilityKit';
27import { DataShareResultSet, dataShare, dataSharePredicates } from '@kit.ArkData';
28import { BusinessError } from '@kit.BasicServicesKit'
29import { UIAbility } from '@kit.AbilityKit';
30
31export default class EntryAbility extends UIAbility {
32  onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {
33    let dataShareHelper: dataShare.DataShareHelper | undefined = undefined;
34    let uri = ("datashare:///com.samples.datasharetest.DataShare");
35    let context = this.context;
36    dataShare.createDataShareHelper(context, uri, (err:BusinessError, data:dataShare.DataShareHelper) => {
37      if (err != undefined) {
38        console.error("createDataShareHelper fail, error message : " + err);
39      } else {
40        console.info("createDataShareHelper end, data : " + data);
41        dataShareHelper = data;
42      }
43    });
44
45    let columns = ["*"];
46    let da = new dataSharePredicates.DataSharePredicates();
47    let resultSet: DataShareResultSet | undefined = undefined;
48    da.equalTo("name", "ZhangSan");
49    if (dataShareHelper != undefined) {
50      (dataShareHelper as dataShare.DataShareHelper).query(uri, da, columns).then((data: DataShareResultSet) => {
51        console.info("query end, data : " + data);
52        resultSet = data;
53      }).catch((err: BusinessError) => {
54        console.error("query fail, error message : " + err);
55      });
56    }
57  };
58};
59```
60
61## DataShareResultSet
62提供通过查询数据库生成的结果集的相关访问方法。
63
64列或键名称作为字符串数组返回,其中字符串的顺序与结果集中的列或键的顺序相同。
65
66### 属性
67
68**系统能力:**  SystemCapability.DistributedDataManager.DataShare.Core
69
70| 名称        | 类型      | 必填 | 说明                     |
71| ----------- | ------------- | ---- | ------------------------ |
72| columnNames | Array<string> | 是   | 结果集中所有列的名称。   |
73| columnCount | number        | 是   | 结果集中的列数。         |
74| rowCount    | number        | 是   | 结果集中的行数。         |
75| isClosed    | boolean       | 是   | 标识当前结果集是否关闭。如果结果集已关闭,则为true;否则为false。 |
76
77### goToFirstRow
78
79goToFirstRow(): boolean
80
81转到结果集的第一行。
82
83**系统能力:** SystemCapability.DistributedDataManager.DataShare.Core
84
85**返回值:**
86
87| 类型    | 说明                                          |
88| :------ | --------------------------------------------- |
89| boolean | 如果成功移动结果集,则为true;否则返回false。 |
90
91**示例:**
92
93```ts
94// resultSet需依照本页的使用说明进行创建。
95if (resultSet != undefined) {
96  let isGoToFirstRow = (resultSet as DataShareResultSet).goToFirstRow();
97  console.info('resultSet.goToFirstRow: ' + isGoToFirstRow);
98}
99```
100
101### goToLastRow
102
103goToLastRow(): boolean
104
105转到结果集的最后一行。
106
107**系统能力:**  SystemCapability.DistributedDataManager.DataShare.Core
108
109**返回值:**
110
111| 类型 | 说明 |
112| -------- | -------- |
113| boolean | 如果成功移动结果集,则为true;否则返回false。 |
114
115**示例:**
116
117```ts
118if (resultSet != undefined) {
119  let isGoToLastRow = (resultSet as DataShareResultSet).goToLastRow();
120  console.info('resultSet.goToLastRow: ' + isGoToLastRow);
121}
122```
123
124### goToNextRow
125
126goToNextRow(): boolean
127
128转到结果集的下一行。
129
130**系统能力:**  SystemCapability.DistributedDataManager.DataShare.Core
131
132**返回值:**
133
134| 类型    | 说明                                          |
135| ------- | --------------------------------------------- |
136| boolean | 如果成功移动结果集,则为true;否则返回false。 |
137
138**示例:**
139
140```ts
141if (resultSet != undefined) {
142  let isGoToNextRow = (resultSet as DataShareResultSet).goToNextRow();
143  console.info('resultSet.goToNextRow: ' + isGoToNextRow);
144}
145```
146
147### goToPreviousRow
148
149goToPreviousRow(): boolean
150
151转到结果集的上一行。
152
153**系统能力:**  SystemCapability.DistributedDataManager.DataShare.Core
154
155**返回值:**
156
157| 类型    | 说明                                          |
158| ------- | --------------------------------------------- |
159| boolean | 如果成功移动结果集,则为true;否则返回false。 |
160
161**示例:**
162
163```ts
164if (resultSet != undefined) {
165  let isGoToPreviousRow = (resultSet as DataShareResultSet).goToPreviousRow();
166  console.info('resultSet.goToPreviousRow: ' + isGoToPreviousRow);
167}
168```
169
170### goTo
171
172goTo(offset: number): boolean
173
174相对于当前位置向前或向后移动指定行数。
175
176**系统能力:**  SystemCapability.DistributedDataManager.DataShare.Core
177
178**参数:**
179
180| **参数名** | **类型** | **必填** | 说明                                                         |
181| ---------- | -------- | -------- | ------------------------------------------------------------ |
182| offset     | number   | 是       | 表示相对于当前位置的偏移量。offset为负值表示向前偏移,正值则表示向后偏移。 |
183
184**返回值:**
185
186| 类型    | 说明                                          |
187| ------- | --------------------------------------------- |
188| boolean | 如果成功移动结果集,则为true;否则返回false。 |
189
190**示例:**
191
192```ts
193let goToNum = 1;
194if (resultSet != undefined) {
195  let isGoTo = (resultSet as DataShareResultSet).goTo(goToNum);
196  console.info('resultSet.goTo: ' + isGoTo);
197}
198```
199
200### goToRow
201
202goToRow(position: number): boolean
203
204转到结果集的指定行。
205
206**系统能力:**  SystemCapability.DistributedDataManager.DataShare.Core
207
208**参数:**
209
210| **参数名** | **类型** | **必填** | 说明                                    |
211| ---------- | -------- | -------- | --------------------------------------- |
212| position   | number   | 是       | 表示要移动到的指定位置,从 0 开始。 |
213
214**返回值:**
215
216| 类型    | 说明                                          |
217| ------- | --------------------------------------------- |
218| boolean | 如果成功移动结果集,则为true;否则返回false。 |
219
220**示例:**
221
222```ts
223let goToRowNum = 2;
224if (resultSet != undefined) {
225  let isGoToRow = (resultSet as DataShareResultSet).goToRow(goToRowNum);
226  console.info('resultSet.goToRow: ' + isGoToRow);
227}
228```
229
230### getBlob
231
232getBlob(columnIndex: number): Uint8Array
233
234以字节数组的形式获取当前行中指定列的值。
235
236如果当前行中指定的列或键的值为空,或者指定的列或键不是Blob类型,则使用方需要确定是否抛出此异常。
237
238**系统能力:**  SystemCapability.DistributedDataManager.DataShare.Core
239
240**参数:**
241
242| **参数名**  | **类型** | **必填** | 说明                    |
243| ----------- | -------- | -------- | ----------------------- |
244| columnIndex | number   | 是       | 指定的列索引,从0开始。 |
245
246**返回值:**
247
248| 类型       | 说明                             |
249| ---------- | -------------------------------- |
250| Uint8Array | 以字节数组的形式返回指定列的值。 |
251
252**示例:**
253
254```ts
255let columnIndex = 1;
256if (resultSet != undefined) {
257  let goToFirstRow = (resultSet as DataShareResultSet).goToFirstRow();
258  let getBlob = (resultSet as DataShareResultSet).getBlob(columnIndex);
259  console.info('resultSet.getBlob: ' + getBlob);
260}
261```
262
263### getString
264
265getString(columnIndex: number): string
266
267以字符串形式获取当前行中指定列的值。
268
269如果当前行中指定的列或键的值为空,或者指定的列或键不是string类型,则使用方需要确定是否抛出此异常。
270
271**系统能力:**  SystemCapability.DistributedDataManager.DataShare.Core
272
273**参数:**
274
275| **参数名**  | **类型** | **必填** | 说明                    |
276| ----------- | -------- | -------- | ----------------------- |
277| columnIndex | number   | 是       | 指定的列索引,从0开始。 |
278
279**返回值:**
280
281| 类型   | 说明                         |
282| ------ | ---------------------------- |
283| string | 以字符串形式返回指定列的值。 |
284
285**示例:**
286
287```ts
288let columnIndex = 1;
289if (resultSet != undefined) {
290  let goToFirstRow = (resultSet as DataShareResultSet).goToFirstRow();
291  let getString = (resultSet as DataShareResultSet).getString(columnIndex);
292  console.info('resultSet.getString: ' + getString);
293}
294```
295
296### getLong
297
298getLong(columnIndex: number): number
299
300以长整数值形式获取当前行中指定列的值。
301
302如果当前行中指定的列或键的值为空,或者指定的列或键不是long类型,则使用方需要确定是否抛出此异常。
303
304**系统能力:**  SystemCapability.DistributedDataManager.DataShare.Core
305
306**参数:**
307
308| **参数名**  | **类型** | **必填** | 说明                    |
309| ----------- | -------- | -------- | ----------------------- |
310| columnIndex | number   | 是       | 指定的列索引,从0开始。 |
311
312**返回值:**
313
314| 类型   | 说明                       |
315| ------ | -------------------------- |
316| number | 以长整数值形式返回指定列的值。 |
317
318**示例:**
319
320```ts
321let columnIndex = 1;
322if (resultSet != undefined) {
323  let goToFirstRow = (resultSet as DataShareResultSet).goToFirstRow();
324  let getLong = (resultSet as DataShareResultSet).getLong(columnIndex);
325  console.info('resultSet.getLong: ' + getLong);
326}
327```
328
329### getDouble
330
331getDouble(columnIndex: number): number
332
333以值类型为双浮点数形式获取当前行中指定列的值。
334
335如果当前行中指定的列或键的值为空,或者指定的列或键不是double类型,则使用方需要确定是否抛出此异常。
336
337**系统能力:**  SystemCapability.DistributedDataManager.DataShare.Core
338
339**参数:**
340
341| **参数名**  | **类型** | **必填** | 说明                    |
342| ----------- | -------- | -------- | ----------------------- |
343| columnIndex | number   | 是       | 指定的列索引,从0开始。 |
344
345**返回值:**
346
347| 类型   | 说明                         |
348| ------ | ---------------------------- |
349| number | 值类型为双浮点数形式返回指定列的值。 |
350
351**示例:**
352
353```ts
354let columnIndex = 1;
355if (resultSet != undefined) {
356  let goToFirstRow = (resultSet as DataShareResultSet).goToFirstRow();
357  let getDouble = (resultSet as DataShareResultSet).getDouble(columnIndex);
358  console.info('resultSet.getDouble: ' + getDouble);
359}
360```
361
362### close
363
364close(): void
365
366关闭结果集。
367
368对结果集调用此方法将释放其所有资源并使其无效。
369
370**系统能力:**  SystemCapability.DistributedDataManager.DataShare.Core
371
372**示例:**
373
374```ts
375if (resultSet != undefined) {
376  (resultSet as DataShareResultSet).close();
377}
378```
379
380### getColumnIndex
381
382getColumnIndex(columnName: string): number
383
384根据指定的列名获取列索引。
385
386列名作为输入参数传递。
387
388**系统能力:**  SystemCapability.DistributedDataManager.DataShare.Core
389
390**参数:**
391
392| **参数名** | **类型** | **必填** | 说明                       |
393| ---------- | -------- | -------- | -------------------------- |
394| columnName | string   | 是       | 表示结果集中指定列的名称。 |
395
396**返回值:**
397
398| 类型   | 说明               |
399| ------ | ------------------ |
400| number | 返回指定列的索引。 |
401
402**示例:**
403
404```ts
405let ColumnName = "name";
406if (resultSet != undefined) {
407  let getColumnIndex = (resultSet as DataShareResultSet).getColumnIndex(ColumnName);
408  console.info('resultSet.getColumnIndex: ' + getColumnIndex);
409}
410```
411
412### getColumnName
413
414getColumnName(columnIndex: number): string
415
416根据指定的列索引获取列名。
417
418列索引作为输入参数传递。
419
420**系统能力:**  SystemCapability.DistributedDataManager.DataShare.Core
421
422**参数:**
423
424| **参数名**  | **类型** | **必填** | 说明                       |
425| ----------- | -------- | -------- | -------------------------- |
426| columnIndex | number   | 是       | 表示结果集中指定列的索引。 |
427
428**返回值:**
429
430| 类型   | 说明               |
431| ------ | ------------------ |
432| string | 返回指定列的名称。 |
433
434**示例:**
435
436```ts
437let columnIndex = 1;
438if (resultSet != undefined) {
439  let getColumnName = (resultSet as DataShareResultSet).getColumnName(columnIndex);
440  console.info('resultSet.getColumnName: ' + getColumnName);
441}
442```
443
444### getDataType
445
446getDataType(columnIndex: number): DataType
447
448指定列索引获取该列的数据类型。
449
450如果当前行中指定的列或键的值为空,或者指定的列或键不是DataType类型,则使用方需要确定是否抛出此异常。
451
452**系统能力:**  SystemCapability.DistributedDataManager.DataShare.Core
453
454**参数:**
455
456| **参数名**  | **类型** | **必填** | 说明                       |
457| ----------- | -------- | -------- | -------------------------- |
458| columnIndex | number   | 是       | 表示结果集中指定列的索引。 |
459
460**返回值:**
461
462| 类型                  | 说明               |
463| --------------------- | ------------------ |
464| [DataType](#datatype) | 返回指定列的类型。 |
465
466**示例:**
467
468```ts
469let columnIndex = 1;
470if (resultSet != undefined) {
471  let getDataType = (resultSet as DataShareResultSet).getDataType(columnIndex);
472  console.info('resultSet.getDataType: ' + getDataType);
473}
474```
475
476## DataType
477
478数据类型枚举。
479
480**系统能力:**  SystemCapability.DistributedDataManager.DataShare.Core
481
482| 名称        | 值 | 说明                 |
483| ----------- | ------ | -------------------- |
484| TYPE_NULL   | 0      | 表示值类型为空。     |
485| TYPE_LONG   | 1      | 表示值类型为长整数值。   |
486| TYPE_DOUBLE | 2      | 表示值类型为双浮点数。 |
487| TYPE_STRING | 3      | 表示值类型为字符串。 |
488| TYPE_BLOB   | 4      | 表示值类型为字节数组。 |