1# @ohos.data.dataShareResultSet (数据共享结果集)(系统接口) 2 3**结果集(DataShareResultSet)** 可提供访问由查询数据库生成的结果集的相关方法,根据提供的行数,查询相应的值,也可查询指定数据类型的值。 4 5> **说明:** 6> 7> - 本模块首批接口从API version 9开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 8> 9> - 本模块接口为系统接口。 10> 11> - 本模块接口仅可在Stage模型下使用。 12> 13> - 数据共享结果集在全系统最多同时存在32个,使用完及时释放。 14 15## 导入模块 16 17```ts 18import { DataShareResultSet } from '@kit.ArkData'; 19``` 20 21## 使用说明 22 23需要通过调用[query](js-apis-data-dataShare-sys.md#query)接口获取DataShareResultSet对象。 24 25```ts 26import { DataShareResultSet, dataShare, dataSharePredicates } from '@kit.ArkData'; 27import { BusinessError } from '@kit.BasicServicesKit' 28import { UIAbility } from '@kit.AbilityKit'; 29 30let dataShareHelper: dataShare.DataShareHelper | undefined = undefined; 31let uri = ("datashare:///com.samples.datasharetest.DataShare"); 32let context = getContext(UIAbility); 33dataShare.createDataShareHelper(context, uri, (err:BusinessError, data:dataShare.DataShareHelper) => { 34 if (err != undefined) { 35 console.error("createDataShareHelper fail, error message : " + err); 36 } else { 37 console.info("createDataShareHelper end, data : " + data); 38 dataShareHelper = data; 39 } 40}); 41 42let columns = ["*"]; 43let da = new dataSharePredicates.DataSharePredicates(); 44let resultSet: DataShareResultSet | undefined = undefined; 45da.equalTo("name", "ZhangSan"); 46if (dataShareHelper != undefined) { 47 (dataShareHelper as dataShare.DataShareHelper).query(uri, da, columns).then((data: DataShareResultSet) => { 48 console.info("query end, data : " + data); 49 resultSet = data; 50 }).catch((err: BusinessError) => { 51 console.error("query fail, error message : " + err); 52 }); 53} 54``` 55 56## DataShareResultSet 57提供通过查询数据库生成的结果集的相关访问方法。 58 59列或键名称作为字符串数组返回,其中字符串的顺序与结果集中的列或键的顺序相同。 60 61### 属性 62 63**系统能力:** SystemCapability.DistributedDataManager.DataShare.Core 64 65| 名称 | 类型 | 必填 | 说明 | 66| ----------- | ------------- | ---- | ------------------------ | 67| columnNames | Array<string> | 是 | 结果集中所有列的名称。 | 68| columnCount | number | 是 | 结果集中的列数。 | 69| rowCount | number | 是 | 结果集中的行数。 | 70| isClosed | boolean | 是 | 标识当前结果集是否关闭。 | 71 72### goToFirstRow 73 74goToFirstRow(): boolean 75 76转到结果集的第一行。 77 78**系统能力:** SystemCapability.DistributedDataManager.DataShare.Core 79 80**返回值:** 81 82| 类型 | 说明 | 83| :------ | --------------------------------------------- | 84| boolean | 如果成功移动结果集,则为true;否则返回false。 | 85 86**示例:** 87 88```ts 89// resultSet需依照本页的使用说明进行创建。 90if (resultSet != undefined) { 91 let isGoToFirstRow = (resultSet as DataShareResultSet).goToFirstRow(); 92 console.info('resultSet.goToFirstRow: ' + isGoToFirstRow); 93} 94``` 95 96### goToLastRow 97 98goToLastRow(): boolean 99 100转到结果集的最后一行。 101 102**系统能力:** SystemCapability.DistributedDataManager.DataShare.Core 103 104**返回值:** 105 106| 类型 | 说明 | 107| -------- | -------- | 108| boolean | 如果成功移动结果集,则为true;否则返回false。 | 109 110**示例:** 111 112```ts 113if (resultSet != undefined) { 114 let isGoToLastRow = (resultSet as DataShareResultSet).goToLastRow(); 115 console.info('resultSet.goToLastRow: ' + isGoToLastRow); 116} 117``` 118 119### goToNextRow 120 121goToNextRow(): boolean 122 123转到结果集的下一行。 124 125**系统能力:** SystemCapability.DistributedDataManager.DataShare.Core 126 127**返回值:** 128 129| 类型 | 说明 | 130| ------- | --------------------------------------------- | 131| boolean | 如果成功移动结果集,则为true;否则返回false。 | 132 133**示例:** 134 135```ts 136if (resultSet != undefined) { 137 let isGoToNextRow = (resultSet as DataShareResultSet).goToNextRow(); 138 console.info('resultSet.goToNextRow: ' + isGoToNextRow); 139} 140``` 141 142### goToPreviousRow 143 144goToPreviousRow(): boolean 145 146转到结果集的上一行。 147 148**系统能力:** SystemCapability.DistributedDataManager.DataShare.Core 149 150**返回值:** 151 152| 类型 | 说明 | 153| ------- | --------------------------------------------- | 154| boolean | 如果成功移动结果集,则为true;否则返回false。 | 155 156**示例:** 157 158```ts 159if (resultSet != undefined) { 160 let isGoToPreviousRow = (resultSet as DataShareResultSet).goToPreviousRow(); 161 console.info('resultSet.goToPreviousRow: ' + isGoToPreviousRow); 162} 163``` 164 165### goTo 166 167goTo(offset: number): boolean 168 169相对于当前位置向前或向后移动指定行数。 170 171**系统能力:** SystemCapability.DistributedDataManager.DataShare.Core 172 173**参数:** 174 175| **参数名** | **类型** | **必填** | 说明 | 176| ---------- | -------- | -------- | ------------------------------------------------------------ | 177| offset | number | 是 | 表示相对于当前位置的偏移量。offset为负值表示向前偏移,正值则表示向后偏移。 | 178 179**返回值:** 180 181| 类型 | 说明 | 182| ------- | --------------------------------------------- | 183| boolean | 如果成功移动结果集,则为true;否则返回false。 | 184 185**示例:** 186 187```ts 188let goToNum = 1; 189if (resultSet != undefined) { 190 let isGoTo = (resultSet as DataShareResultSet).goTo(goToNum); 191 console.info('resultSet.goTo: ' + isGoTo); 192} 193``` 194 195### goToRow 196 197goToRow(position: number): boolean 198 199转到结果集的指定行。 200 201**系统能力:** SystemCapability.DistributedDataManager.DataShare.Core 202 203**参数:** 204 205| **参数名** | **类型** | **必填** | 说明 | 206| ---------- | -------- | -------- | --------------------------------------- | 207| position | number | 是 | 表示要移动到的指定位置,从 0 开始。 | 208 209**返回值:** 210 211| 类型 | 说明 | 212| ------- | --------------------------------------------- | 213| boolean | 如果成功移动结果集,则为true;否则返回false。 | 214 215**示例:** 216 217```ts 218let goToRowNum = 2; 219if (resultSet != undefined) { 220 let isGoToRow = (resultSet as DataShareResultSet).goToRow(goToRowNum); 221 console.info('resultSet.goToRow: ' + isGoToRow); 222} 223``` 224 225### getBlob 226 227getBlob(columnIndex: number): Uint8Array 228 229以字节数组的形式获取当前行中指定列的值。 230 231如果当前行中指定的列或键的值为空,或者指定的列或键不是Blob类型,则使用方需要确定是否抛出此异常。 232 233**系统能力:** SystemCapability.DistributedDataManager.DataShare.Core 234 235**参数:** 236 237| **参数名** | **类型** | **必填** | 说明 | 238| ----------- | -------- | -------- | ----------------------- | 239| columnIndex | number | 是 | 指定的列索引,从0开始。 | 240 241**返回值:** 242 243| 类型 | 说明 | 244| ---------- | -------------------------------- | 245| Uint8Array | 以字节数组的形式返回指定列的值。 | 246 247**示例:** 248 249```ts 250let columnIndex = 1; 251if (resultSet != undefined) { 252 let goToFirstRow = (resultSet as DataShareResultSet).goToFirstRow(); 253 let getBlob = (resultSet as DataShareResultSet).getBlob(columnIndex); 254 console.info('resultSet.getBlob: ' + getBlob); 255} 256``` 257 258### getString 259 260getString(columnIndex: number): string 261 262以字符串形式获取当前行中指定列的值。 263 264如果当前行中指定的列或键的值为空,或者指定的列或键不是string类型,则使用方需要确定是否抛出此异常。 265 266**系统能力:** SystemCapability.DistributedDataManager.DataShare.Core 267 268**参数:** 269 270| **参数名** | **类型** | **必填** | 说明 | 271| ----------- | -------- | -------- | ----------------------- | 272| columnIndex | number | 是 | 指定的列索引,从0开始。 | 273 274**返回值:** 275 276| 类型 | 说明 | 277| ------ | ---------------------------- | 278| string | 以字符串形式返回指定列的值。 | 279 280**示例:** 281 282```ts 283let columnIndex = 1; 284if (resultSet != undefined) { 285 let goToFirstRow = (resultSet as DataShareResultSet).goToFirstRow(); 286 let getString = (resultSet as DataShareResultSet).getString(columnIndex); 287 console.info('resultSet.getString: ' + getString); 288} 289``` 290 291### getLong 292 293getLong(columnIndex: number): number 294 295以长整数值形式获取当前行中指定列的值。 296 297如果当前行中指定的列或键的值为空,或者指定的列或键不是long类型,则使用方需要确定是否抛出此异常。 298 299**系统能力:** SystemCapability.DistributedDataManager.DataShare.Core 300 301**参数:** 302 303| **参数名** | **类型** | **必填** | 说明 | 304| ----------- | -------- | -------- | ----------------------- | 305| columnIndex | number | 是 | 指定的列索引,从0开始。 | 306 307**返回值:** 308 309| 类型 | 说明 | 310| ------ | -------------------------- | 311| number | 以长整数值形式返回指定列的值。 | 312 313**示例:** 314 315```ts 316let columnIndex = 1; 317if (resultSet != undefined) { 318 let goToFirstRow = (resultSet as DataShareResultSet).goToFirstRow(); 319 let getLong = (resultSet as DataShareResultSet).getLong(columnIndex); 320 console.info('resultSet.getLong: ' + getLong); 321} 322``` 323 324### getDouble 325 326getDouble(columnIndex: number): number 327 328以值类型为双浮点数形式获取当前行中指定列的值。 329 330如果当前行中指定的列或键的值为空,或者指定的列或键不是double类型,则使用方需要确定是否抛出此异常。 331 332**系统能力:** SystemCapability.DistributedDataManager.DataShare.Core 333 334**参数:** 335 336| **参数名** | **类型** | **必填** | 说明 | 337| ----------- | -------- | -------- | ----------------------- | 338| columnIndex | number | 是 | 指定的列索引,从0开始。 | 339 340**返回值:** 341 342| 类型 | 说明 | 343| ------ | ---------------------------- | 344| number | 值类型为双浮点数形式返回指定列的值。 | 345 346**示例:** 347 348```ts 349let columnIndex = 1; 350if (resultSet != undefined) { 351 let goToFirstRow = (resultSet as DataShareResultSet).goToFirstRow(); 352 let getDouble = (resultSet as DataShareResultSet).getDouble(columnIndex); 353 console.info('resultSet.getDouble: ' + getDouble); 354} 355``` 356 357### close 358 359close(): void 360 361关闭结果集。 362 363对结果集调用此方法将释放其所有资源并使其无效。 364 365**系统能力:** SystemCapability.DistributedDataManager.DataShare.Core 366 367**示例:** 368 369```ts 370if (resultSet != undefined) { 371 (resultSet as DataShareResultSet).close(); 372} 373``` 374 375### getColumnIndex 376 377getColumnIndex(columnName: string): number 378 379根据指定的列名获取列索引。 380 381列名作为输入参数传递。 382 383**系统能力:** SystemCapability.DistributedDataManager.DataShare.Core 384 385**参数:** 386 387| **参数名** | **类型** | **必填** | 说明 | 388| ---------- | -------- | -------- | -------------------------- | 389| columnName | string | 是 | 表示结果集中指定列的名称。 | 390 391**返回值:** 392 393| 类型 | 说明 | 394| ------ | ------------------ | 395| number | 返回指定列的索引。 | 396 397**示例:** 398 399```ts 400let ColumnName = "name"; 401if (resultSet != undefined) { 402 let getColumnIndex = (resultSet as DataShareResultSet).getColumnIndex(ColumnName); 403 console.info('resultSet.getColumnIndex: ' + getColumnIndex); 404} 405``` 406 407### getColumnName 408 409getColumnName(columnIndex: number): string 410 411根据指定的列索引获取列名。 412 413列索引作为输入参数传递。 414 415**系统能力:** SystemCapability.DistributedDataManager.DataShare.Core 416 417**参数:** 418 419| **参数名** | **类型** | **必填** | 说明 | 420| ----------- | -------- | -------- | -------------------------- | 421| columnIndex | number | 是 | 表示结果集中指定列的索引。 | 422 423**返回值:** 424 425| 类型 | 说明 | 426| ------ | ------------------ | 427| string | 返回指定列的名称。 | 428 429**示例:** 430 431```ts 432let columnIndex = 1; 433if (resultSet != undefined) { 434 let getColumnName = (resultSet as DataShareResultSet).getColumnName(columnIndex); 435 console.info('resultSet.getColumnName: ' + getColumnName); 436} 437``` 438 439### getDataType 440 441getDataType(columnIndex: number): DataType 442 443指定列索引获取该列的数据类型。 444 445如果当前行中指定的列或键的值为空,或者指定的列或键不是DataType类型,则使用方需要确定是否抛出此异常。 446 447**系统能力:** SystemCapability.DistributedDataManager.DataShare.Core 448 449**参数:** 450 451| **参数名** | **类型** | **必填** | 说明 | 452| ----------- | -------- | -------- | -------------------------- | 453| columnIndex | number | 是 | 表示结果集中指定列的索引。 | 454 455**返回值:** 456 457| 类型 | 说明 | 458| --------------------- | ------------------ | 459| [DataType](#datatype) | 返回指定列的类型。 | 460 461**示例:** 462 463```ts 464let columnIndex = 1; 465if (resultSet != undefined) { 466 let getDataType = (resultSet as DataShareResultSet).getDataType(columnIndex); 467 console.info('resultSet.getDataType: ' + getDataType); 468} 469``` 470 471## DataType 472 473数据类型枚举。 474 475**系统能力:** SystemCapability.DistributedDataManager.DataShare.Core 476 477| 名称 | 值 | 说明 | 478| ----------- | ------ | -------------------- | 479| TYPE_NULL | 0 | 表示值类型为空。 | 480| TYPE_LONG | 1 | 表示值类型为长整数值。 | 481| TYPE_DOUBLE | 2 | 表示值类型为双浮点数。 | 482| TYPE_STRING | 3 | 表示值类型为字符串。 | 483| TYPE_BLOB | 4 | 表示值类型为字节数组。 |