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