js-apis-data-resultset.md 8.7 KB
Newer Older
Z
zengyawen 已提交
1
# 结果集
Z
zengyawen 已提交
2

Z
zengyawen 已提交
3 4
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> 本模块首批接口从API version 7开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
Z
zengyawen 已提交
5

6 7
## 系统能力
SystemCapability.DistributedDataManager.RelationalStore.Core
Z
zengyawen 已提交
8

Z
zengyawen 已提交
9 10 11
## 使用说明

需要通过[RdbStore.query()](js-apis-data-rdb.md#query)获取resultSet对象。
Z
zengyawen 已提交
12 13 14 15 16 17 18

```
import dataRdb from '@ohos.data.rdb';
let predicates = new dataRdb.RdbPredicates("EMPLOYEE")
predicates.equalTo("AGE", 18)
let promise = rdbStore.query(predicates, ["ID", "NAME", "AGE", "SALARY", "CODES"])
promise.then((resultSet) => {
19 20
    await console.log(TAG + "resultSet columnNames:" + resultSet.columnNames);
    await console.log(TAG + "resultSet columnCount:" + resultSet.columnCount);})
Z
zengyawen 已提交
21 22
```

Z
zengyawen 已提交
23 24

## 权限
Z
zengyawen 已提交
25 26 27



Z
zengyawen 已提交
28 29

## ResultSet
Z
zengyawen 已提交
30 31 32

提供通过查询数据库生成的数据库结果集的访问方法。

Z
zengyawen 已提交
33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52

### 属性


| 名称 | 参数类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| columnNames | Array<string> | 是 | 获取结果集中所有列的名称。 |
| columnCount | number | 是 | 获取结果集中的列数。 |
| rowCount | number | 是 | 获取结果集中的行数。 |
| rowIndex | number | 是 | 获取结果集当前行的索引。 |
| isAtFirstRow | boolean | 是 | 检查结果集是否位于第一行。 |
| isAtLastRow | boolean | 是 | 检查结果集是否位于最后一行。 |
| isEnded | boolean | 是 | 检查结果集是否位于最后一行之后。 |
| isStarted | boolean | 是 | 检查指针是否移动过。 |
| isClosed | boolean | 是 | 检查当前结果集是否关闭。 |


### getColumnIndex

getColumnIndex(columnName: string): number
Z
zengyawen 已提交
53 54 55

根据指定的列名获取列索引。

Z
zengyawen 已提交
56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78
- 参数:
  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
  | columnName | string | 是 | 表示结果集中指定列的名称。 |

- 返回值:
  | 类型 | 说明 |
  | -------- | -------- |
  | number | 返回指定列的索引。 |

- 示例:
  ```
  resultSet.goToFirstRow()
  const id = resultSet.getLong(resultSet.getColumnIndex("ID"))
  const name = resultSet.getString(resultSet.getColumnIndex("NAME"))
  const age = resultSet.getLong(resultSet.getColumnIndex("AGE"))
  const salary = resultSet.getDouble(resultSet.getColumnIndex("SALARY"))
  ```


### getColumnName

getColumnName(columnIndex: number): string
Z
zengyawen 已提交
79 80 81

根据指定的列索引获取列名。

Z
zengyawen 已提交
82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102
- 参数:
  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
  | columnIndex | number | 是 | 表示结果集中指定列的索引。 |

- 返回值:
  | 类型 | 说明 |
  | -------- | -------- |
  | string | 返回指定列的名称。 |

- 示例:
  ```
  const id = resultSet.getColumnName(0)
  const name = resultSet.getColumnName(1)
  const age = resultSet.getColumnName(2)
  ```


### goTo

goTo(offset:number): boolean
Z
zengyawen 已提交
103 104 105

向前或向后转至结果集的指定行,相对于其当前位置偏移。

Z
zengyawen 已提交
106 107 108 109 110 111 112 113 114 115 116 117 118
- 参数:
  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
  | offset | number | 是 | 表示相对于当前位置的偏移量。 |

- 返回值:
  | 类型 | 说明 |
  | -------- | -------- |
  | boolean | 如果成功移动结果集,则为true;否则返回false。 |

- 示例:
  ```
  let predicates = new dataRdb.RdbPredicates("EMPLOYEE")
119 120 121 122
  let resultSet = await rdbStore.query(predicates, ["ID", "NAME", "AGE", "SALARY", "CODES"])
  resultSet.goTo(1)
  resultSet.close()
  resultSet = null
Z
zengyawen 已提交
123 124 125 126 127 128
  ```


### goToRow

goToRow(position: number): boolean
Z
zengyawen 已提交
129 130 131

转到结果集的指定行。

Z
zengyawen 已提交
132 133 134 135
- 参数:
  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
  | position | number | 是 | 表示要移动到的指定位置。 |
Z
zengyawen 已提交
136

Z
zengyawen 已提交
137 138 139 140
- 返回值:
  | 类型 | 说明 |
  | -------- | -------- |
  | boolean | 如果成功移动结果集,则为true;否则返回false。 |
Z
zengyawen 已提交
141

Z
zengyawen 已提交
142 143 144
- 示例:
  ```
  let predicates = new dataRdb.RdbPredicates("EMPLOYEE")
145 146 147 148
  let resultSet = await rdbStore.query(predicates, ["ID", "NAME", "AGE", "SALARY", "CODES"])
  resultSet.goToRow(1)
  resultSet.close()
  resultSet = null
Z
zengyawen 已提交
149
  ```
Z
zengyawen 已提交
150 151


Z
zengyawen 已提交
152
### goToFirstRow
Z
zengyawen 已提交
153

Z
zengyawen 已提交
154
goToFirstRow(): boolean
Z
zengyawen 已提交
155 156


Z
zengyawen 已提交
157
转到结果集的第一行。
Z
zengyawen 已提交
158 159


Z
zengyawen 已提交
160 161 162 163 164 165 166 167
- 返回值:
  | 类型 | 说明 |
  | -------- | -------- |
  | boolean | 如果成功移动结果集,则为true;否则返回false。 |

- 示例:
  ```
  let predicates = new dataRdb.RdbPredicates("EMPLOYEE")
168 169 170 171
  let resultSet = await rdbStore.query(predicates, ["ID", "NAME", "AGE", "SALARY", "CODES"])
  resultSet.goToFirstRow()
  resultSet.close()
  resultSet = null;
Z
zengyawen 已提交
172
  ```
Z
zengyawen 已提交
173 174


Z
zengyawen 已提交
175
### goToLastRow
Z
zengyawen 已提交
176

Z
zengyawen 已提交
177
goToLastRow(): boolean
Z
zengyawen 已提交
178

Z
zengyawen 已提交
179
转到结果集的最后一行。
Z
zengyawen 已提交
180

Z
zengyawen 已提交
181 182 183 184
- 返回值:
  | 类型 | 说明 |
  | -------- | -------- |
  | boolean | 如果成功移动结果集,则为true;否则返回false。 |
Z
zengyawen 已提交
185

Z
zengyawen 已提交
186 187 188
- 示例:
  ```
  let predicates = new dataRdb.RdbPredicates("EMPLOYEE")
189 190 191 192
  let resultSet = await rdbStore.query(predicates, ["ID", "NAME", "AGE", "SALARY", "CODES"])
  resultSet.goToLastRow()
  resultSet.close()
  resultSet = null;
Z
zengyawen 已提交
193
  ```
Z
zengyawen 已提交
194 195


Z
zengyawen 已提交
196
### goToNextRow
Z
zengyawen 已提交
197

Z
zengyawen 已提交
198
goToNextRow(): boolean
Z
zengyawen 已提交
199

Z
zengyawen 已提交
200
转到结果集的下一行。
Z
zengyawen 已提交
201

Z
zengyawen 已提交
202 203 204 205
- 返回值:
  | 类型 | 说明 |
  | -------- | -------- |
  | boolean | 如果成功移动结果集,则为true;否则返回false。 |
Z
zengyawen 已提交
206

Z
zengyawen 已提交
207 208 209
- 示例:
  ```
  let predicates = new dataRdb.RdbPredicates("EMPLOYEE")
210 211 212 213
  let resultSet = await rdbStore.query(predicates, ["ID", "NAME", "AGE", "SALARY", "CODES"])
  resultSet.goToNextRow()
  resultSet.close()
  resultSet = null;
Z
zengyawen 已提交
214
  ```
Z
zengyawen 已提交
215 216


Z
zengyawen 已提交
217
### goToPreviousRow
Z
zengyawen 已提交
218

Z
zengyawen 已提交
219
goToPreviousRow(): boolean
Z
zengyawen 已提交
220 221 222

转到结果集的上一行。

Z
zengyawen 已提交
223 224 225 226
- 返回值:
  | 类型 | 说明 |
  | -------- | -------- |
  | boolean | 如果成功移动结果集,则为true;否则返回false。 |
Z
zengyawen 已提交
227

Z
zengyawen 已提交
228 229 230
- 示例:
  ```
  let predicates = new dataRdb.RdbPredicates("EMPLOYEE")
231 232 233 234
  let resultSet = await rdbStore.query(predicates, ["ID", "NAME", "AGE", "SALARY", "CODES"])
  resultSet.goToPreviousRow()
  resultSet.close()
  resultSet = null
Z
zengyawen 已提交
235
  ```
Z
zengyawen 已提交
236 237


Z
zengyawen 已提交
238
### getBlob
Z
zengyawen 已提交
239

Z
zengyawen 已提交
240
getBlob(columnIndex: number): Uint8Array
Z
zengyawen 已提交
241

Z
zengyawen 已提交
242
以字节数组的形式获取当前行中指定列的值。
Z
zengyawen 已提交
243

Z
zengyawen 已提交
244 245 246 247 248 249 250 251 252 253 254 255 256 257
- 参数:
  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
  | columnIndex | number | 是 | 指定的列索引,从0开始。 |

- 返回值:
  | 类型 | 说明 |
  | -------- | -------- |
  | Uint8Array | 以字节数组的形式返回指定列的值。 |

- 示例:
  ```
  const codes = resultSet.getBlob(resultSet.getColumnIndex("CODES"))
  ```
Z
zengyawen 已提交
258 259


Z
zengyawen 已提交
260 261 262
### getString

getString(columnIndex: number): string
Z
zengyawen 已提交
263 264 265

以字符串形式获取当前行中指定列的值。

Z
zengyawen 已提交
266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284
- 参数:
  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
  | columnIndex | number | 是 | 指定的列索引,从0开始。 |

- 返回值:
  | 类型 | 说明 |
  | -------- | -------- |
  | string | 以字符串形式返回指定列的值。 |

- 示例:
  ```
  const name = resultSet.getString(resultSet.getColumnIndex("NAME"))
  ```


### getLong

getLong(columnIndex: number): number
Z
zengyawen 已提交
285 286 287

以Long形式获取当前行中指定列的值。

Z
zengyawen 已提交
288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306
- 参数:
  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
  | columnIndex | number | 是 | 指定的列索引,从0开始。 |

- 返回值:
  | 类型 | 说明 |
  | -------- | -------- |
  | number | 以Long形式返回指定列的值。 |

- 示例:
  ```
  const age = resultSet.getLong(resultSet.getColumnIndex("AGE"))
  ```


### getDouble

getDouble(columnIndex: number): number
Z
zengyawen 已提交
307 308 309

以double形式获取当前行中指定列的值。

Z
zengyawen 已提交
310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328
- 参数:
  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
  | columnIndex | number | 是 | 指定的列索引,从0开始。 |

- 返回值:
  | 类型 | 说明 |
  | -------- | -------- |
  | number | 以double形式返回指定列的值。 |

- 示例:
  ```
  const salary = resultSet.getDouble(resultSet.getColumnIndex("SALARY"))
  ```


### isColumnNull

isColumnNull(columnIndex: number): boolean
Z
zengyawen 已提交
329 330 331

检查当前行中指定列的值是否为null。

Z
zengyawen 已提交
332 333 334 335
- 参数:
  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
  | columnIndex | number | 是 | 指定的列索引,从0开始。 |
Z
zengyawen 已提交
336

Z
zengyawen 已提交
337 338 339 340 341 342 343 344 345
- 返回值:
  | 类型 | 说明 |
  | -------- | -------- |
  | boolean | 如果当前行中指定列的值为null,则返回true,否则返回false。 |

- 示例:
  ```
  const isColumnNull = resultSet.isColumnNull(resultSet.getColumnIndex("CODES"))
  ```
Z
zengyawen 已提交
346 347


Z
zengyawen 已提交
348 349 350 351 352
### close

close(): void

关闭结果集。
Z
zengyawen 已提交
353 354


Z
zengyawen 已提交
355 356 357
- 示例:
  ```
  let predicates = new dataRdb.RdbPredicates("EMPLOYEE")
358 359 360
  let resultSet = await rdbStore.query(predicates, ["ID", "NAME", "AGE", "SALARY", "CODES"])
  resultSet.close()
  resultSet = null
Z
zengyawen 已提交
361
  ```