1# 结果集 2 3结果集是指用户调用关系型数据库查询接口之后返回的结果集合,提供了多种灵活的数据访问方式,以便用户获取各项数据。 4 5> **说明:** 6> 7> 本模块首批接口从API version 7开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 8 9 10## 使用说明 11 12需要通过[RdbStore.query()](js-apis-data-rdb.md#query)获取resultSet对象。 13 14```js 15import dataRdb from '@ohos.data.rdb'; 16let predicates = new dataRdb.RdbPredicates("EMPLOYEE") 17predicates.equalTo("AGE", 18) 18let promise = rdbStore.query(predicates, ["ID", "NAME", "AGE", "SALARY", "CODES"]) 19promise.then((resultSet) => { 20 console.log(TAG + "resultSet columnNames:" + resultSet.columnNames); 21 console.log(TAG + "resultSet columnCount:" + resultSet.columnCount);}) 22``` 23 24## ResultSet 25 26提供通过查询数据库生成的数据库结果集的访问方法。 27 28 29### 属性 30 31**系统能力:** 以下各项对应的系统能力均为SystemCapability.DistributedDataManager.RelationalStore.Core。 32 33| 名称 | 参数类型 | 必填 | 说明 | 34| -------- | -------- | -------- | -------- | 35| columnNames | Array<string> | 是 | 获取结果集中所有列的名称。 | 36| columnCount | number | 是 | 获取结果集中的列数。 | 37| rowCount | number | 是 | 获取结果集中的行数。 | 38| rowIndex | number | 是 | 获取结果集当前行的索引。 | 39| isAtFirstRow | boolean | 是 | 检查结果集是否位于第一行。 | 40| isAtLastRow | boolean | 是 | 检查结果集是否位于最后一行。 | 41| isEnded | boolean | 是 | 检查结果集是否位于最后一行之后。 | 42| isStarted | boolean | 是 | 检查指针是否移动过。 | 43| isClosed | boolean | 是 | 检查当前结果集是否关闭。 | 44 45 46### getColumnIndex 47 48getColumnIndex(columnName: string): number 49 50根据指定的列名获取列索引。 51 52**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core。 53 54**参数:** 55 | 参数名 | 类型 | 必填 | 说明 | 56 | -------- | -------- | -------- | -------- | 57 | columnName | string | 是 | 表示结果集中指定列的名称。 | 58 59**返回值:** 60 | 类型 | 说明 | 61 | -------- | -------- | 62 | number | 返回指定列的索引。 | 63 64**示例:** 65 ```js 66 resultSet.goToFirstRow() 67 const id = resultSet.getLong(resultSet.getColumnIndex("ID")) 68 const name = resultSet.getString(resultSet.getColumnIndex("NAME")) 69 const age = resultSet.getLong(resultSet.getColumnIndex("AGE")) 70 const salary = resultSet.getDouble(resultSet.getColumnIndex("SALARY")) 71 ``` 72 73 74### getColumnName 75 76getColumnName(columnIndex: number): string 77 78根据指定的列索引获取列名。 79 80**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core。 81 82**参数:** 83 | 参数名 | 类型 | 必填 | 说明 | 84 | -------- | -------- | -------- | -------- | 85 | columnIndex | number | 是 | 表示结果集中指定列的索引。 | 86 87**返回值:** 88 | 类型 | 说明 | 89 | -------- | -------- | 90 | string | 返回指定列的名称。 | 91 92**示例:** 93 ```js 94 const id = resultSet.getColumnName(0) 95 const name = resultSet.getColumnName(1) 96 const age = resultSet.getColumnName(2) 97 ``` 98 99 100### goTo 101 102goTo(offset:number): boolean 103 104向前或向后转至结果集的指定行,相对于其当前位置偏移。 105 106**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core。 107 108**参数:** 109 | 参数名 | 类型 | 必填 | 说明 | 110 | -------- | -------- | -------- | -------- | 111 | offset | number | 是 | 表示相对于当前位置的偏移量。 | 112 113**返回值:** 114 | 类型 | 说明 | 115 | -------- | -------- | 116 | boolean | 如果成功移动结果集,则为true;否则返回false。 | 117 118**示例:** 119 ```js 120 let predicatesgoto = new dataRdb.RdbPredicates("EMPLOYEE") 121 let promisequerygoto = rdbStore.query(predicatesgoto, ["ID", "NAME", "AGE", "SALARY", "CODES"]) 122 promisequerygoto.then((resultSet) => { 123 resultSet.goTo(1) 124 resultSet.close() 125 }).catch((err) => { 126 console.log('query failed') 127 }) 128 ``` 129 130 131### goToRow 132 133goToRow(position: number): boolean 134 135转到结果集的指定行。 136 137**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core。 138 139**参数:** 140 | 参数名 | 类型 | 必填 | 说明 | 141 | -------- | -------- | -------- | -------- | 142 | position | number | 是 | 表示要移动到的指定位置。 | 143 144**返回值:** 145 | 类型 | 说明 | 146 | -------- | -------- | 147 | boolean | 如果成功移动结果集,则为true;否则返回false。 | 148 149**示例:** 150 ```js 151 let predicatesgotorow = new dataRdb.RdbPredicates("EMPLOYEE") 152 let promisequerygotorow = rdbStore.query(predicatesgotorow, ["ID", "NAME", "AGE", "SALARY", "CODES"]) 153 promisequerygotorow.then((resultSet) => { 154 resultSet.goToRow(5) 155 resultSet.close() 156 }).catch((err) => { 157 console.log('query failed') 158 }) 159 ``` 160 161 162### goToFirstRow 163 164goToFirstRow(): boolean 165 166 167转到结果集的第一行。 168 169**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core。 170 171**返回值:** 172 | 类型 | 说明 | 173 | -------- | -------- | 174 | boolean | 如果成功移动结果集,则为true;否则返回false。 | 175 176**示例:** 177 ```js 178 let predicatesgoFirst = new dataRdb.RdbPredicates("EMPLOYEE") 179 let promisequerygoFirst = rdbStore.query(predicatesgoFirst, ["ID", "NAME", "AGE", "SALARY", "CODES"]) 180 promisequerygoFirst.then((resultSet) => { 181 resultSet.goToFirstRow() 182 resultSet.close() 183 }).catch((err) => { 184 console.log('query failed') 185 }) 186 ``` 187 188 189### goToLastRow 190 191goToLastRow(): boolean 192 193转到结果集的最后一行。 194 195**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core。 196 197**返回值:** 198 | 类型 | 说明 | 199 | -------- | -------- | 200 | boolean | 如果成功移动结果集,则为true;否则返回false。 | 201 202**示例:** 203 ```js 204 let predicatesgoLast = new dataRdb.RdbPredicates("EMPLOYEE") 205 let promisequerygoLast = rdbStore.query(predicatesgoLast, ["ID", "NAME", "AGE", "SALARY", "CODES"]) 206 promisequerygoLast.then((resultSet) => { 207 resultSet.goToLastRow() 208 resultSet.close() 209 }).catch((err) => { 210 console.log('query failed') 211 }) 212 ``` 213 214 215### goToNextRow 216 217goToNextRow(): boolean 218 219转到结果集的下一行。 220 221**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core。 222 223**返回值:** 224 | 类型 | 说明 | 225 | -------- | -------- | 226 | boolean | 如果成功移动结果集,则为true;否则返回false。 | 227 228**示例:** 229 ```js 230 let predicatesgoNext = new dataRdb.RdbPredicates("EMPLOYEE") 231 let promisequerygoNext = rdbStore.query(predicatesgoNext, ["ID", "NAME", "AGE", "SALARY", "CODES"]) 232 promisequerygoNext.then((resultSet) => { 233 resultSet.goToNextRow() 234 resultSet.close() 235 }).catch((err) => { 236 console.log('query failed') 237 }) 238 ``` 239 240 241### goToPreviousRow 242 243goToPreviousRow(): boolean 244 245转到结果集的上一行。 246 247**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core。 248 249**返回值:** 250 | 类型 | 说明 | 251 | -------- | -------- | 252 | boolean | 如果成功移动结果集,则为true;否则返回false。 | 253 254**示例:** 255 ```js 256 let predicatesgoPrev = new dataRdb.RdbPredicates("EMPLOYEE") 257 let promisequerygoPrev = rdbStore.query(predicatesgoPrev, ["ID", "NAME", "AGE", "SALARY", "CODES"]) 258 promisequerygoPrev.then((resultSet) => { 259 resultSet.goToPreviousRow() 260 resultSet.close() 261 }).catch((err) => { 262 console.log('query failed') 263 }) 264 ``` 265 266 267### getBlob 268 269getBlob(columnIndex: number): Uint8Array 270 271以字节数组的形式获取当前行中指定列的值。 272 273**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core。 274 275**参数:** 276 | 参数名 | 类型 | 必填 | 说明 | 277 | -------- | -------- | -------- | -------- | 278 | columnIndex | number | 是 | 指定的列索引,从0开始。 | 279 280**返回值:** 281 | 类型 | 说明 | 282 | -------- | -------- | 283 | Uint8Array | 以字节数组的形式返回指定列的值。 | 284 285**示例:** 286 ```js 287 const codes = resultSet.getBlob(resultSet.getColumnIndex("CODES")) 288 ``` 289 290 291### getString 292 293getString(columnIndex: number): string 294 295以字符串形式获取当前行中指定列的值。 296 297**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core。 298 299**参数:** 300 | 参数名 | 类型 | 必填 | 说明 | 301 | -------- | -------- | -------- | -------- | 302 | columnIndex | number | 是 | 指定的列索引,从0开始。 | 303 304**返回值:** 305 | 类型 | 说明 | 306 | -------- | -------- | 307 | string | 以字符串形式返回指定列的值。 | 308 309**示例:** 310 ```js 311 const name = resultSet.getString(resultSet.getColumnIndex("NAME")) 312 ``` 313 314 315### getLong 316 317getLong(columnIndex: number): number 318 319以Long形式获取当前行中指定列的值。 320 321**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core。 322 323**参数:** 324 | 参数名 | 类型 | 必填 | 说明 | 325 | -------- | -------- | -------- | -------- | 326 | columnIndex | number | 是 | 指定的列索引,从0开始。 | 327 328**返回值:** 329 | 类型 | 说明 | 330 | -------- | -------- | 331 | number | 以Long形式返回指定列的值。 | 332 333**示例:** 334 ```js 335 const age = resultSet.getLong(resultSet.getColumnIndex("AGE")) 336 ``` 337 338 339### getDouble 340 341getDouble(columnIndex: number): number 342 343以double形式获取当前行中指定列的值。 344 345**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core。 346 347**参数:** 348 | 参数名 | 类型 | 必填 | 说明 | 349 | -------- | -------- | -------- | -------- | 350 | columnIndex | number | 是 | 指定的列索引,从0开始。 | 351 352**返回值:** 353 | 类型 | 说明 | 354 | -------- | -------- | 355 | number | 以double形式返回指定列的值。 | 356 357**示例:** 358 ```js 359 const salary = resultSet.getDouble(resultSet.getColumnIndex("SALARY")) 360 ``` 361 362 363### isColumnNull 364 365isColumnNull(columnIndex: number): boolean 366 367检查当前行中指定列的值是否为null。 368 369**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core。 370 371**参数:** 372 | 参数名 | 类型 | 必填 | 说明 | 373 | -------- | -------- | -------- | -------- | 374 | columnIndex | number | 是 | 指定的列索引,从0开始。 | 375 376**返回值:** 377 | 类型 | 说明 | 378 | -------- | -------- | 379 | boolean | 如果当前行中指定列的值为null,则返回true,否则返回false。 | 380 381**示例:** 382 ```js 383 const isColumnNull = resultSet.isColumnNull(resultSet.getColumnIndex("CODES")) 384 ``` 385 386 387### close 388 389close(): void 390 391关闭结果集。 392 393**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core。 394 395**示例:** 396 ```js 397 let predicatesClose = new dataRdb.RdbPredicates("EMPLOYEE") 398 let promiseClose = rdbStore.query(predicatesClose, ["ID", "NAME", "AGE", "SALARY", "CODES"]) 399 promiseClose.then((resultSet) => { 400 resultSet.close() 401 }).catch((err) => { 402 console.log('resultset close failed') 403 }) 404 ``` 405 406