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

G
ge-yafang 已提交
3
> **说明:**
Z
zengyawen 已提交
4
> 本模块首批接口从API version 7开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
Z
zengyawen 已提交
5 6


Z
zengyawen 已提交
7 8 9
## 使用说明

需要通过[RdbStore.query()](js-apis-data-rdb.md#query)获取resultSet对象。
Z
zengyawen 已提交
10

G
ge-yafang 已提交
11
```js
Z
zengyawen 已提交
12 13 14 15 16
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) => {
W
wuyongning 已提交
17 18
    console.log(TAG + "resultSet columnNames:" + resultSet.columnNames);
    console.log(TAG + "resultSet columnCount:" + resultSet.columnCount);})
Z
zengyawen 已提交
19 20
```

Z
zengyawen 已提交
21
## ResultSet
Z
zengyawen 已提交
22 23 24

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

Z
zengyawen 已提交
25 26 27

### 属性

G
ge-yafang 已提交
28
**系统能力:**以下各项对应的系统能力均为SystemCapability.DistributedDataManager.RelationalStore.Core。
Z
zengyawen 已提交
29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45

| 名称 | 参数类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| 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 已提交
46 47 48

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

G
ge-yafang 已提交
49
**系统能力:**SystemCapability.DistributedDataManager.RelationalStore.Core。
W
wuyongning 已提交
50

G
ge-yafang 已提交
51
**参数:**
Z
zengyawen 已提交
52 53 54 55
  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
  | columnName | string | 是 | 表示结果集中指定列的名称。 |

G
ge-yafang 已提交
56
**返回值:**
Z
zengyawen 已提交
57 58 59 60
  | 类型 | 说明 |
  | -------- | -------- |
  | number | 返回指定列的索引。 |

G
ge-yafang 已提交
61
**示例:**
G
ge-yafang 已提交
62
  ```js
Z
zengyawen 已提交
63 64 65 66 67 68 69 70 71 72 73
  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 已提交
74 75 76

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

G
ge-yafang 已提交
77
**系统能力:**SystemCapability.DistributedDataManager.RelationalStore.Core。
W
wuyongning 已提交
78

G
ge-yafang 已提交
79
**参数:**
Z
zengyawen 已提交
80 81 82 83
  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
  | columnIndex | number | 是 | 表示结果集中指定列的索引。 |

G
ge-yafang 已提交
84
**返回值:**
Z
zengyawen 已提交
85 86 87 88
  | 类型 | 说明 |
  | -------- | -------- |
  | string | 返回指定列的名称。 |

G
ge-yafang 已提交
89
**示例:**
G
ge-yafang 已提交
90
  ```js
Z
zengyawen 已提交
91 92 93 94 95 96 97 98 99
  const id = resultSet.getColumnName(0)
  const name = resultSet.getColumnName(1)
  const age = resultSet.getColumnName(2)
  ```


### goTo

goTo(offset:number): boolean
Z
zengyawen 已提交
100 101 102

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

G
ge-yafang 已提交
103
**系统能力:**SystemCapability.DistributedDataManager.RelationalStore.Core。
W
wuyongning 已提交
104

G
ge-yafang 已提交
105
**参数:**
Z
zengyawen 已提交
106 107 108 109
  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
  | offset | number | 是 | 表示相对于当前位置的偏移量。 |

G
ge-yafang 已提交
110
**返回值:**
Z
zengyawen 已提交
111 112 113 114
  | 类型 | 说明 |
  | -------- | -------- |
  | boolean | 如果成功移动结果集,则为true;否则返回false。 |

G
ge-yafang 已提交
115
**示例:**
G
ge-yafang 已提交
116
  ```js
W
wuyongning 已提交
117 118 119 120 121 122 123 124
  let predicatesgoto = new dataRdb.RdbPredicates("EMPLOYEE")
  let promisequerygoto = rdbStore.query(predicatesgoto, ["ID", "NAME", "AGE", "SALARY", "CODES"])
  promisequerygoto.then((resultSet) {
      resultSet.goTo(1)
      resultSet.close()
  }).catch((err) => {
      console.log('query failed')
  })
Z
zengyawen 已提交
125 126 127 128 129 130
  ```


### goToRow

goToRow(position: number): boolean
Z
zengyawen 已提交
131 132 133

转到结果集的指定行。

G
ge-yafang 已提交
134
**系统能力:**SystemCapability.DistributedDataManager.RelationalStore.Core。
W
wuyongning 已提交
135

G
ge-yafang 已提交
136
**参数:**
Z
zengyawen 已提交
137 138 139
  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
  | position | number | 是 | 表示要移动到的指定位置。 |
Z
zengyawen 已提交
140

G
ge-yafang 已提交
141
**返回值:**
Z
zengyawen 已提交
142 143 144
  | 类型 | 说明 |
  | -------- | -------- |
  | boolean | 如果成功移动结果集,则为true;否则返回false。 |
Z
zengyawen 已提交
145

G
ge-yafang 已提交
146
**示例:**
G
ge-yafang 已提交
147
  ```js
W
wuyongning 已提交
148 149 150 151 152 153 154 155
  let predicatesgotorow = new dataRdb.RdbPredicates("EMPLOYEE")
  let promisequerygotorow = rdbStore.query(predicatesgotorow, ["ID", "NAME", "AGE", "SALARY", "CODES"])
  promisequerygotorow.then((resultSet) {
      resultSet.goToRow(5)
      resultSet.close()
  }).catch((err) => {
      console.log('query failed')
  })
Z
zengyawen 已提交
156
  ```
Z
zengyawen 已提交
157 158


Z
zengyawen 已提交
159
### goToFirstRow
Z
zengyawen 已提交
160

Z
zengyawen 已提交
161
goToFirstRow(): boolean
Z
zengyawen 已提交
162 163


Z
zengyawen 已提交
164
转到结果集的第一行。
Z
zengyawen 已提交
165

G
ge-yafang 已提交
166
**系统能力:**SystemCapability.DistributedDataManager.RelationalStore.Core。
Z
zengyawen 已提交
167

G
ge-yafang 已提交
168
**返回值:**
Z
zengyawen 已提交
169 170 171 172
  | 类型 | 说明 |
  | -------- | -------- |
  | boolean | 如果成功移动结果集,则为true;否则返回false。 |

G
ge-yafang 已提交
173
**示例:**
G
ge-yafang 已提交
174
  ```js
W
wuyongning 已提交
175 176 177 178 179 180 181 182
  let predicatesgoFirst = new dataRdb.RdbPredicates("EMPLOYEE")
  let promisequerygoFirst = rdbStore.query(predicatesgoFirst, ["ID", "NAME", "AGE", "SALARY", "CODES"])
  promisequerygoFirst.then((resultSet) {
      resultSet.goToFirstRow()
      resultSet.close()
  }).catch((err) => {
      console.log('query failed')
  })
Z
zengyawen 已提交
183
  ```
Z
zengyawen 已提交
184 185


Z
zengyawen 已提交
186
### goToLastRow
Z
zengyawen 已提交
187

Z
zengyawen 已提交
188
goToLastRow(): boolean
Z
zengyawen 已提交
189

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

G
ge-yafang 已提交
192
**系统能力:**SystemCapability.DistributedDataManager.RelationalStore.Core。
W
wuyongning 已提交
193

G
ge-yafang 已提交
194
**返回值:**
Z
zengyawen 已提交
195 196 197
  | 类型 | 说明 |
  | -------- | -------- |
  | boolean | 如果成功移动结果集,则为true;否则返回false。 |
Z
zengyawen 已提交
198

G
ge-yafang 已提交
199
**示例:**
G
ge-yafang 已提交
200
  ```js
W
wuyongning 已提交
201 202 203 204 205 206 207 208
  let predicatesgoLast = new dataRdb.RdbPredicates("EMPLOYEE")
  let promisequerygoLast = rdbStore.query(predicatesgoLast, ["ID", "NAME", "AGE", "SALARY", "CODES"])
  promisequerygoLast.then((resultSet) {
      resultSet.goToLastRow()
      resultSet.close()
  }).catch((err) => {
      console.log('query failed')
  })
Z
zengyawen 已提交
209
  ```
Z
zengyawen 已提交
210 211


Z
zengyawen 已提交
212
### goToNextRow
Z
zengyawen 已提交
213

Z
zengyawen 已提交
214
goToNextRow(): boolean
Z
zengyawen 已提交
215

Z
zengyawen 已提交
216
转到结果集的下一行。
Z
zengyawen 已提交
217

G
ge-yafang 已提交
218
**系统能力:**SystemCapability.DistributedDataManager.RelationalStore.Core。
W
wuyongning 已提交
219

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

G
ge-yafang 已提交
225
**示例:**
G
ge-yafang 已提交
226
  ```js
W
wuyongning 已提交
227 228 229 230 231 232 233 234
  let predicatesgoNext = new dataRdb.RdbPredicates("EMPLOYEE")
  let promisequerygoNext = rdbStore.query(predicatesgoNext, ["ID", "NAME", "AGE", "SALARY", "CODES"])
  promisequerygoNext.then((resultSet) {
      resultSet.goToNextRow()
      resultSet.close()
  }).catch((err) => {
      console.log('query failed')
  })
Z
zengyawen 已提交
235
  ```
Z
zengyawen 已提交
236 237


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

Z
zengyawen 已提交
240
goToPreviousRow(): boolean
Z
zengyawen 已提交
241 242 243

转到结果集的上一行。

G
ge-yafang 已提交
244
**系统能力:**SystemCapability.DistributedDataManager.RelationalStore.Core。
W
wuyongning 已提交
245

G
ge-yafang 已提交
246
**返回值:**
Z
zengyawen 已提交
247 248 249
  | 类型 | 说明 |
  | -------- | -------- |
  | boolean | 如果成功移动结果集,则为true;否则返回false。 |
Z
zengyawen 已提交
250

G
ge-yafang 已提交
251
**示例:**
G
ge-yafang 已提交
252
  ```js
W
wuyongning 已提交
253 254 255 256 257 258 259 260
  let predicatesgoPrev = new dataRdb.RdbPredicates("EMPLOYEE")
  let promisequerygoPrev = rdbStore.query(predicatesgoPrev, ["ID", "NAME", "AGE", "SALARY", "CODES"])
  promisequerygoPrev.then((resultSet) {
      resultSet.goToPreviousRow()
      resultSet.close()
  }).catch((err) => {
      console.log('query failed')
  })
Z
zengyawen 已提交
261
  ```
Z
zengyawen 已提交
262 263


Z
zengyawen 已提交
264
### getBlob
Z
zengyawen 已提交
265

Z
zengyawen 已提交
266
getBlob(columnIndex: number): Uint8Array
Z
zengyawen 已提交
267

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

G
ge-yafang 已提交
270
**系统能力:**SystemCapability.DistributedDataManager.RelationalStore.Core。
W
wuyongning 已提交
271

G
ge-yafang 已提交
272
**参数:**
Z
zengyawen 已提交
273 274 275 276
  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
  | columnIndex | number | 是 | 指定的列索引,从0开始。 |

G
ge-yafang 已提交
277
**返回值:**
Z
zengyawen 已提交
278 279 280 281
  | 类型 | 说明 |
  | -------- | -------- |
  | Uint8Array | 以字节数组的形式返回指定列的值。 |

G
ge-yafang 已提交
282
**示例:**
G
ge-yafang 已提交
283
  ```js
Z
zengyawen 已提交
284 285
  const codes = resultSet.getBlob(resultSet.getColumnIndex("CODES"))
  ```
Z
zengyawen 已提交
286 287


Z
zengyawen 已提交
288 289 290
### getString

getString(columnIndex: number): string
Z
zengyawen 已提交
291 292 293

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

G
ge-yafang 已提交
294
**系统能力:**SystemCapability.DistributedDataManager.RelationalStore.Core。
W
wuyongning 已提交
295

G
ge-yafang 已提交
296
**参数:**
Z
zengyawen 已提交
297 298 299 300
  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
  | columnIndex | number | 是 | 指定的列索引,从0开始。 |

G
ge-yafang 已提交
301
**返回值:**
Z
zengyawen 已提交
302 303 304 305
  | 类型 | 说明 |
  | -------- | -------- |
  | string | 以字符串形式返回指定列的值。 |

G
ge-yafang 已提交
306
**示例:**
G
ge-yafang 已提交
307
  ```js
Z
zengyawen 已提交
308 309 310 311 312 313 314
  const name = resultSet.getString(resultSet.getColumnIndex("NAME"))
  ```


### getLong

getLong(columnIndex: number): number
Z
zengyawen 已提交
315 316 317

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

G
ge-yafang 已提交
318
**系统能力:**SystemCapability.DistributedDataManager.RelationalStore.Core。
W
wuyongning 已提交
319

G
ge-yafang 已提交
320
**参数:**
Z
zengyawen 已提交
321 322 323 324
  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
  | columnIndex | number | 是 | 指定的列索引,从0开始。 |

G
ge-yafang 已提交
325
**返回值:**
Z
zengyawen 已提交
326 327 328 329
  | 类型 | 说明 |
  | -------- | -------- |
  | number | 以Long形式返回指定列的值。 |

G
ge-yafang 已提交
330
**示例:**
G
ge-yafang 已提交
331
  ```js
Z
zengyawen 已提交
332 333 334 335 336 337 338
  const age = resultSet.getLong(resultSet.getColumnIndex("AGE"))
  ```


### getDouble

getDouble(columnIndex: number): number
Z
zengyawen 已提交
339 340 341

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

G
ge-yafang 已提交
342
**系统能力:**SystemCapability.DistributedDataManager.RelationalStore.Core。
W
wuyongning 已提交
343

G
ge-yafang 已提交
344
**参数:**
Z
zengyawen 已提交
345 346 347 348
  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
  | columnIndex | number | 是 | 指定的列索引,从0开始。 |

G
ge-yafang 已提交
349
**返回值:**
Z
zengyawen 已提交
350 351 352 353
  | 类型 | 说明 |
  | -------- | -------- |
  | number | 以double形式返回指定列的值。 |

G
ge-yafang 已提交
354
**示例:**
G
ge-yafang 已提交
355
  ```js
Z
zengyawen 已提交
356 357 358 359 360 361 362
  const salary = resultSet.getDouble(resultSet.getColumnIndex("SALARY"))
  ```


### isColumnNull

isColumnNull(columnIndex: number): boolean
Z
zengyawen 已提交
363 364 365

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

G
ge-yafang 已提交
366
**系统能力:**SystemCapability.DistributedDataManager.RelationalStore.Core。
W
wuyongning 已提交
367

G
ge-yafang 已提交
368
**参数:**
Z
zengyawen 已提交
369 370 371
  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
  | columnIndex | number | 是 | 指定的列索引,从0开始。 |
Z
zengyawen 已提交
372

G
ge-yafang 已提交
373
**返回值:**
Z
zengyawen 已提交
374 375 376 377
  | 类型 | 说明 |
  | -------- | -------- |
  | boolean | 如果当前行中指定列的值为null,则返回true,否则返回false。 |

G
ge-yafang 已提交
378
**示例:**
G
ge-yafang 已提交
379
  ```js
Z
zengyawen 已提交
380 381
  const isColumnNull = resultSet.isColumnNull(resultSet.getColumnIndex("CODES"))
  ```
Z
zengyawen 已提交
382 383


Z
zengyawen 已提交
384 385 386 387 388
### close

close(): void

关闭结果集。
Z
zengyawen 已提交
389

G
ge-yafang 已提交
390
**系统能力:**SystemCapability.DistributedDataManager.RelationalStore.Core。
Z
zengyawen 已提交
391

G
ge-yafang 已提交
392
**示例:**
G
ge-yafang 已提交
393
  ```js
W
wuyongning 已提交
394 395 396
  let predicatesClose = new dataRdb.RdbPredicates("EMPLOYEE")
  let promiseClose = rdbStore.query(predicatesClose, ["ID", "NAME", "AGE", "SALARY", "CODES"])
  promiseClose.then((resultSet) {
W
wuyongning 已提交
397 398
      resultSet.close()
  }).catch((err) => {
W
wuyongning 已提交
399
      console.log('resultset close failed')
W
wuyongning 已提交
400
  })
Z
zengyawen 已提交
401
  ```
G
ge-yafang 已提交
402