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

Z
zengyawen 已提交
24 25


Z
zengyawen 已提交
26 27

## ResultSet
Z
zengyawen 已提交
28 29 30

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

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

### 属性


| 名称 | 参数类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| 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 已提交
51 52 53

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

Z
zengyawen 已提交
54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
- 参数:
  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
  | 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 已提交
77 78 79

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

Z
zengyawen 已提交
80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100
- 参数:
  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
  | 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 已提交
101 102 103

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

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

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

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


### goToRow

goToRow(position: number): boolean
Z
zengyawen 已提交
127 128 129

转到结果集的指定行。

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

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

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


Z
zengyawen 已提交
150
### goToFirstRow
Z
zengyawen 已提交
151

Z
zengyawen 已提交
152
goToFirstRow(): boolean
Z
zengyawen 已提交
153 154


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


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

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


Z
zengyawen 已提交
173
### goToLastRow
Z
zengyawen 已提交
174

Z
zengyawen 已提交
175
goToLastRow(): boolean
Z
zengyawen 已提交
176

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

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

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


Z
zengyawen 已提交
194
### goToNextRow
Z
zengyawen 已提交
195

Z
zengyawen 已提交
196
goToNextRow(): boolean
Z
zengyawen 已提交
197

Z
zengyawen 已提交
198
转到结果集的下一行。
Z
zengyawen 已提交
199

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

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


Z
zengyawen 已提交
215
### goToPreviousRow
Z
zengyawen 已提交
216

Z
zengyawen 已提交
217
goToPreviousRow(): boolean
Z
zengyawen 已提交
218 219 220

转到结果集的上一行。

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

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


Z
zengyawen 已提交
236
### getBlob
Z
zengyawen 已提交
237

Z
zengyawen 已提交
238
getBlob(columnIndex: number): Uint8Array
Z
zengyawen 已提交
239

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

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

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

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


Z
zengyawen 已提交
258 259 260
### getString

getString(columnIndex: number): string
Z
zengyawen 已提交
261 262 263

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

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

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

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


### getLong

getLong(columnIndex: number): number
Z
zengyawen 已提交
283 284 285

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

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

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

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


### getDouble

getDouble(columnIndex: number): number
Z
zengyawen 已提交
305 306 307

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

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

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

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


### isColumnNull

isColumnNull(columnIndex: number): boolean
Z
zengyawen 已提交
327 328 329

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

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

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

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


Z
zengyawen 已提交
346 347 348 349 350
### close

close(): void

关闭结果集。
Z
zengyawen 已提交
351 352


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