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