js-apis-data-DataShareResultSet.md 12.6 KB
Newer Older
Z
zengyawen 已提交
1
# @ohos.data.dataShareResultSet (数据共享结果集)
S
songruirui 已提交
2

S
修改  
songruirui 已提交
3
**结果集(DataShareResultSet)** 可提供访问由查询数据库生成的结果集的相关方法,根据提供的行数,查询相应的值,也可查询指定数据类型的值。
S
songruirui 已提交
4

5
> **说明:** 
S
songruirui 已提交
6
>
7 8 9
> 本模块首批接口从API version 9开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
>
> 本模块接口为系统接口。
S
songruirui 已提交
10 11 12 13


## 导入模块

14
```ts
S
songruirui 已提交
15
import DataShareResultSet from '@ohos.data.DataShareResultSet';
S
songruirui 已提交
16 17 18 19
```

## 使用说明

S
修改  
songruirui 已提交
20
需要通过调用[query](js-apis-data-dataShare.md#query)接口获取DataShareResultSet对象。
S
songruirui 已提交
21

22
```ts
S
songruirui 已提交
23
import dataShare from '@ohos.data.dataShare';
S
songruirui 已提交
24
import dataSharePredicates from '@ohos.data.dataSharePredicates'
25
import { BusinessError } from '@ohos.base'
S
songruirui 已提交
26

27
let dataShareHelper: dataShare.DataShareHelper | undefined = undefined;
S
songruirui 已提交
28 29
let uri = ("datashare:///com.samples.datasharetest.DataShare");
await dataShare.createDataShareHelper(this.context, uri, (err, data) => {
30 31 32 33 34 35
  if (err != undefined) {
    console.error("createDataShareHelper fail, error message : " + err);
  } else {
    console.info("createDataShareHelper end, data : " + data);
    dataShareHelper = data;
  }
S
songruirui 已提交
36 37
});

S
songruirui 已提交
38
let columns = ["*"];
S
songruirui 已提交
39
let da = new dataSharePredicates.DataSharePredicates();
40
let resultSet: DataShareResultSet | undefined = undefined;
S
songruirui 已提交
41
da.equalTo("name", "ZhangSan");
42 43
if (dataShareHelper != undefined) {
  (dataShareHelper as dataShare.DataShareHelper).query(uri, da, columns).then((data: DataShareResultSet) => {
S
srr101 已提交
44
    console.info("query end, data : " + data);
S
songruirui 已提交
45
    resultSet = data;
46 47 48 49
  }).catch((err: BusinessError) => {
    console.error("query fail, error message : " + err);
  });
}
S
songruirui 已提交
50 51
```

G
ge-yafang 已提交
52 53 54 55
## DataShareResultSet
提供通过查询数据库生成的结果集的相关访问方法。

### 属性
S
songruirui 已提交
56

S
songruirui 已提交
57 58
**系统能力:**  SystemCapability.DistributedDataManager.DataShare.Core

59
| 名称        | 类型      | 必填 | 说明                     |
S
songruirui 已提交
60
| ----------- | ------------- | ---- | ------------------------ |
S
songruirui 已提交
61
| columnNames | Array<string> | 是   | 结果集中所有列的名称。   |
S
songruirui 已提交
62 63
| columnCount | number        | 是   | 结果集中的列数。         |
| rowCount    | number        | 是   | 结果集中的行数。         |
S
songruirui 已提交
64
| isClosed    | boolean       | 是   | 标识当前结果集是否关闭。 |
S
songruirui 已提交
65

G
ge-yafang 已提交
66
### goToFirstRow
S
songruirui 已提交
67

S
songruirui 已提交
68
goToFirstRow(): boolean
S
songruirui 已提交
69

S
songruirui 已提交
70
转到结果集的第一行。
S
songruirui 已提交
71

S
songruirui 已提交
72
**系统能力:** SystemCapability.DistributedDataManager.DataShare.Core
S
songruirui 已提交
73 74 75

**返回值:**

S
songruirui 已提交
76 77 78
| 类型    | 说明                                          |
| :------ | --------------------------------------------- |
| boolean | 如果成功移动结果集,则为true;否则返回false。 |
S
songruirui 已提交
79 80 81

**示例:**

82
```ts
83 84 85 86
if (resultSet != undefined) {
  let isGoToFirstRow = (resultSet as DataShareResultSet).goToFirstRow();
  console.info('resultSet.goToFirstRow: ' + isGoToFirstRow);
}
S
songruirui 已提交
87 88
```

G
ge-yafang 已提交
89
### goToLastRow
S
songruirui 已提交
90

S
songruirui 已提交
91
goToLastRow(): boolean
S
songruirui 已提交
92

S
songruirui 已提交
93
转到结果集的最后一行。
S
songruirui 已提交
94

S
songruirui 已提交
95
**系统能力:**  SystemCapability.DistributedDataManager.DataShare.Core
S
songruirui 已提交
96 97 98 99 100

**返回值:**

| 类型 | 说明 |
| -------- | -------- |
S
songruirui 已提交
101
| boolean | 如果成功移动结果集,则为true;否则返回false。 |
S
songruirui 已提交
102 103 104

**示例:**

105
```ts
106 107 108 109
if (resultSet != undefined) {
  let isGoToLastRow = (resultSet as DataShareResultSet).goToLastRow();
  console.info('resultSet.goToLastRow: ' + isGoToLastRow);
}
S
songruirui 已提交
110 111
```

G
ge-yafang 已提交
112
### goToNextRow
S
songruirui 已提交
113

S
songruirui 已提交
114
goToNextRow(): boolean
S
songruirui 已提交
115

S
songruirui 已提交
116
转到结果集的下一行。
S
songruirui 已提交
117

S
songruirui 已提交
118
**系统能力:**  SystemCapability.DistributedDataManager.DataShare.Core
S
songruirui 已提交
119 120 121

**返回值:**

S
songruirui 已提交
122 123 124
| 类型    | 说明                                          |
| ------- | --------------------------------------------- |
| boolean | 如果成功移动结果集,则为true;否则返回false。 |
S
songruirui 已提交
125 126 127

**示例:**

128
```ts
129 130 131 132
if (resultSet != undefined) {
  let isGoToNextRow = (resultSet as DataShareResultSet).goToNextRow();
  console.info('resultSet.goToNextRow: ' + isGoToNextRow);
}
S
songruirui 已提交
133 134
```

G
ge-yafang 已提交
135
### goToPreviousRow
S
songruirui 已提交
136

S
songruirui 已提交
137
goToPreviousRow(): boolean
S
songruirui 已提交
138

S
songruirui 已提交
139
转到结果集的上一行。
S
songruirui 已提交
140

S
songruirui 已提交
141
**系统能力:**  SystemCapability.DistributedDataManager.DataShare.Core
S
songruirui 已提交
142 143 144

**返回值:**

S
songruirui 已提交
145 146 147
| 类型    | 说明                                          |
| ------- | --------------------------------------------- |
| boolean | 如果成功移动结果集,则为true;否则返回false。 |
S
songruirui 已提交
148 149 150

**示例:**

151
```ts
152 153 154 155
if (resultSet != undefined) {
  let isGoToPreviousRow = (resultSet as DataShareResultSet).goToPreviousRow();
  console.info('resultSet.goToPreviousRow: ' + isGoToPreviousRow);
}
S
songruirui 已提交
156 157
```

G
ge-yafang 已提交
158
### goTo
S
songruirui 已提交
159

S
songruirui 已提交
160
goTo(offset:number): boolean
S
songruirui 已提交
161

S
修改  
songruirui 已提交
162
相对于当前位置向前或向后移动指定行数。
S
songruirui 已提交
163

S
songruirui 已提交
164
**系统能力:**  SystemCapability.DistributedDataManager.DataShare.Core
S
songruirui 已提交
165 166 167

**参数:**

S
修改  
songruirui 已提交
168 169 170
| **参数名** | **类型** | **必填** | 说明                                                         |
| ---------- | -------- | -------- | ------------------------------------------------------------ |
| offset     | number   | 是       | 表示相对于当前位置的偏移量。offset为负值表示向前偏移,正值则表示向后偏移。 |
S
songruirui 已提交
171 172 173

**返回值:**

S
songruirui 已提交
174 175 176
| 类型    | 说明                                          |
| ------- | --------------------------------------------- |
| boolean | 如果成功移动结果集,则为true;否则返回false。 |
S
songruirui 已提交
177 178 179

**示例:**

180
```ts
S
songruirui 已提交
181
let goToNum = 1;
182 183 184 185
if (resultSet != undefined) {
  let isGoTo = (resultSet as DataShareResultSet).goTo(goToNum);
  console.info('resultSet.goTo: ' + isGoTo);
}
S
songruirui 已提交
186 187
```

G
ge-yafang 已提交
188
### goToRow
S
songruirui 已提交
189

S
songruirui 已提交
190
goToRow(position: number): boolean
S
songruirui 已提交
191

S
songruirui 已提交
192
转到结果集的指定行。
S
songruirui 已提交
193

S
songruirui 已提交
194
**系统能力:**  SystemCapability.DistributedDataManager.DataShare.Core
S
songruirui 已提交
195 196 197 198 199

**参数:**

| **参数名** | **类型** | **必填** | 说明                     |
| ---------- | -------- | -------- | ------------------------ |
S
songruirui 已提交
200
| position   | number   | 是       | 表示要移动到的指定位置。 |
S
songruirui 已提交
201 202 203

**返回值:**

S
songruirui 已提交
204 205 206
| 类型    | 说明                                          |
| ------- | --------------------------------------------- |
| boolean | 如果成功移动结果集,则为true;否则返回false。 |
S
songruirui 已提交
207 208 209

**示例:**

210
```ts
211
let goToRowNum = 2;
212 213 214 215
if (resultSet != undefined) {
  let isGoToRow = (resultSet as DataShareResultSet).goToRow(goToRowNum);
  console.info('resultSet.goToRow: ' + isGoToRow);
}
S
songruirui 已提交
216 217
```

G
ge-yafang 已提交
218
### getBlob
S
songruirui 已提交
219

S
songruirui 已提交
220
getBlob(columnIndex: number): Uint8Array
S
songruirui 已提交
221

S
songruirui 已提交
222
以字节数组的形式获取当前行中指定列的值。
S
songruirui 已提交
223

S
songruirui 已提交
224
**系统能力:**  SystemCapability.DistributedDataManager.DataShare.Core
S
songruirui 已提交
225 226 227

**参数:**

S
songruirui 已提交
228 229 230
| **参数名**  | **类型** | **必填** | 说明                    |
| ----------- | -------- | -------- | ----------------------- |
| columnIndex | number   | 是       | 指定的列索引,从0开始。 |
S
songruirui 已提交
231 232 233

**返回值:**

S
songruirui 已提交
234 235 236
| 类型       | 说明                             |
| ---------- | -------------------------------- |
| Uint8Array | 以字节数组的形式返回指定列的值。 |
S
songruirui 已提交
237 238 239

**示例:**

240
```ts
241
let columnIndex = 1;
242 243 244 245 246
if (resultSet != undefined) {
  let goToFirstRow = (resultSet as DataShareResultSet).goToFirstRow();
  let getBlob = (resultSet as DataShareResultSet).getBlob(columnIndex);
  console.info('resultSet.getBlob: ' + getBlob);
}
S
songruirui 已提交
247 248
```

G
ge-yafang 已提交
249
### getString
S
songruirui 已提交
250

251
getString(columnIndex: number): string
S
songruirui 已提交
252

S
songruirui 已提交
253
以字符串形式获取当前行中指定列的值。
S
songruirui 已提交
254

S
songruirui 已提交
255
**系统能力:**  SystemCapability.DistributedDataManager.DataShare.Core
S
songruirui 已提交
256 257 258

**参数:**

S
songruirui 已提交
259 260 261
| **参数名**  | **类型** | **必填** | 说明                    |
| ----------- | -------- | -------- | ----------------------- |
| columnIndex | number   | 是       | 指定的列索引,从0开始。 |
S
songruirui 已提交
262 263 264

**返回值:**

S
songruirui 已提交
265 266 267
| 类型   | 说明                         |
| ------ | ---------------------------- |
| string | 以字符串形式返回指定列的值。 |
S
songruirui 已提交
268 269 270

**示例:**

271
```ts
272
let columnIndex = 1;
273 274 275 276 277
if (resultSet != undefined) {
  let goToFirstRow = (resultSet as DataShareResultSet).goToFirstRow();
  let getString = (resultSet as DataShareResultSet).getString(columnIndex);
  console.info('resultSet.getString: ' + getString);
}
S
songruirui 已提交
278 279
```

G
ge-yafang 已提交
280
### getLong
S
songruirui 已提交
281

S
songruirui 已提交
282
getLong(columnIndex: number): number
S
songruirui 已提交
283

S
songruirui 已提交
284
以长整数值形式获取当前行中指定列的值。
S
songruirui 已提交
285

S
songruirui 已提交
286
**系统能力:**  SystemCapability.DistributedDataManager.DataShare.Core
S
songruirui 已提交
287 288 289

**参数:**

S
songruirui 已提交
290 291 292
| **参数名**  | **类型** | **必填** | 说明                    |
| ----------- | -------- | -------- | ----------------------- |
| columnIndex | number   | 是       | 指定的列索引,从0开始。 |
S
songruirui 已提交
293 294 295

**返回值:**

S
songruirui 已提交
296 297
| 类型   | 说明                       |
| ------ | -------------------------- |
S
songruirui 已提交
298
| number | 以长整数值形式返回指定列的值。 |
S
songruirui 已提交
299 300 301

**示例:**

302
```ts
303
let columnIndex = 1;
304 305 306 307 308
if (resultSet != undefined) {
  let goToFirstRow = (resultSet as DataShareResultSet).goToFirstRow();
  let getLong = (resultSet as DataShareResultSet).getLong(columnIndex);
  console.info('resultSet.getLong: ' + getLong);
}
S
songruirui 已提交
309 310
```

G
ge-yafang 已提交
311
### getDouble
S
songruirui 已提交
312

S
songruirui 已提交
313
getDouble(columnIndex: number): number
S
songruirui 已提交
314

S
songruirui 已提交
315
以值类型为双浮点数形式获取当前行中指定列的值。
S
songruirui 已提交
316

S
songruirui 已提交
317
**系统能力:**  SystemCapability.DistributedDataManager.DataShare.Core
S
songruirui 已提交
318 319 320

**参数:**

S
songruirui 已提交
321 322 323
| **参数名**  | **类型** | **必填** | 说明                    |
| ----------- | -------- | -------- | ----------------------- |
| columnIndex | number   | 是       | 指定的列索引,从0开始。 |
S
songruirui 已提交
324 325 326

**返回值:**

S
songruirui 已提交
327 328
| 类型   | 说明                         |
| ------ | ---------------------------- |
S
songruirui 已提交
329
| number | 值类型为双浮点数形式返回指定列的值。 |
S
songruirui 已提交
330 331 332

**示例:**

333
```ts
334
let columnIndex = 1;
335 336 337 338 339
if (resultSet != undefined) {
  let goToFirstRow = (resultSet as DataShareResultSet).goToFirstRow();
  let getDouble = (resultSet as DataShareResultSet).getDouble(columnIndex);
  console.info('resultSet.getDouble: ' + getDouble);
}
S
songruirui 已提交
340 341
```

G
ge-yafang 已提交
342
### close
S
songruirui 已提交
343

S
songruirui 已提交
344
close(): void
S
songruirui 已提交
345

S
songruirui 已提交
346
关闭结果集。
S
songruirui 已提交
347

S
songruirui 已提交
348
**系统能力:**  SystemCapability.DistributedDataManager.DataShare.Core
S
songruirui 已提交
349 350 351

**示例:**

352
```ts
353 354 355
if (resultSet != undefined) {
  (resultSet as DataShareResultSet).close();
}
S
songruirui 已提交
356 357
```

G
ge-yafang 已提交
358
### getColumnIndex
S
songruirui 已提交
359

S
songruirui 已提交
360
getColumnIndex(columnName: string): number
S
songruirui 已提交
361

S
songruirui 已提交
362
根据指定的列名获取列索引。
S
songruirui 已提交
363

S
songruirui 已提交
364
**系统能力:**  SystemCapability.DistributedDataManager.DataShare.Core
S
songruirui 已提交
365 366 367

**参数:**

S
songruirui 已提交
368 369 370
| **参数名** | **类型** | **必填** | 说明                       |
| ---------- | -------- | -------- | -------------------------- |
| columnName | string   | 是       | 表示结果集中指定列的名称。 |
S
songruirui 已提交
371 372 373

**返回值:**

S
songruirui 已提交
374 375 376
| 类型   | 说明               |
| ------ | ------------------ |
| number | 返回指定列的索引。 |
S
songruirui 已提交
377 378 379

**示例:**

380
```ts
381
let ColumnName = "name";
382 383 384 385
if (resultSet != undefined) {
  let getColumnIndex = (resultSet as DataShareResultSet).getColumnIndex(ColumnName);
  console.info('resultSet.getColumnIndex: ' + getColumnIndex);
}
S
songruirui 已提交
386 387
```

G
ge-yafang 已提交
388
### getColumnName
S
songruirui 已提交
389

390
getColumnName(columnIndex: number): string
S
songruirui 已提交
391

S
songruirui 已提交
392
根据指定的列索引获取列名。
S
songruirui 已提交
393

S
songruirui 已提交
394
**系统能力:**  SystemCapability.DistributedDataManager.DataShare.Core
S
songruirui 已提交
395 396 397

**参数:**

S
songruirui 已提交
398 399 400
| **参数名**  | **类型** | **必填** | 说明                       |
| ----------- | -------- | -------- | -------------------------- |
| columnIndex | number   | 是       | 表示结果集中指定列的索引。 |
S
songruirui 已提交
401 402 403

**返回值:**

S
songruirui 已提交
404 405 406
| 类型   | 说明               |
| ------ | ------------------ |
| string | 返回指定列的名称。 |
S
songruirui 已提交
407 408 409

**示例:**

410
```ts
411
let columnIndex = 1;
412 413 414 415
if (resultSet != undefined) {
  let getColumnName = (resultSet as DataShareResultSet).getColumnName(columnIndex);
  console.info('resultSet.getColumnName: ' + getColumnName);
}
S
songruirui 已提交
416 417
```

G
ge-yafang 已提交
418
### getDataType
S
songruirui 已提交
419

S
songruirui 已提交
420
getDataType(columnIndex: number): DataType
S
songruirui 已提交
421

S
songruirui 已提交
422
指定列索引获取该列的数据类型。
S
songruirui 已提交
423

S
songruirui 已提交
424
**系统能力:**  SystemCapability.DistributedDataManager.DataShare.Core
S
songruirui 已提交
425 426 427

**参数:**

S
songruirui 已提交
428 429 430
| **参数名**  | **类型** | **必填** | 说明                       |
| ----------- | -------- | -------- | -------------------------- |
| columnIndex | number   | 是       | 表示结果集中指定列的索引。 |
S
songruirui 已提交
431 432 433

**返回值:**

S
songruirui 已提交
434 435 436
| 类型                  | 说明               |
| --------------------- | ------------------ |
| [DataType](#datatype) | 返回指定列的类型。 |
S
songruirui 已提交
437 438 439

**示例:**

440
```ts
S
songruirui 已提交
441
let columnIndex = 1;
442 443 444 445
if (resultSet != undefined) {
  let getDataType = (resultSet as DataShareResultSet).getDataType(columnIndex);
  console.info('resultSet.getDataType: ' + getDataType);
}
S
songruirui 已提交
446 447
```

G
ge-yafang 已提交
448
## DataType
S
songruirui 已提交
449

S
修改  
songruirui 已提交
450
数据类型枚举。
S
songruirui 已提交
451

S
songruirui 已提交
452
**系统能力:**  SystemCapability.DistributedDataManager.DataShare.Core
S
songruirui 已提交
453

S
修改  
songruirui 已提交
454
| 名称        | 值 | 说明                 |
S
songruirui 已提交
455 456
| ----------- | ------ | -------------------- |
| TYPE_NULL   | 0      | 表示值类型为空。     |
S
songruirui 已提交
457 458 459 460
| TYPE_LONG   | 1      | 表示值类型为长整数值。   |
| TYPE_DOUBLE | 2      | 表示值类型为双浮点数。 |
| TYPE_STRING | 3      | 表示值类型为字符串。 |
| TYPE_BLOB   | 4      | 表示值类型为字节数组。 |