js-apis-data-dataShare.md 34.8 KB
Newer Older
S
songruirui 已提交
1
# DataShare
S
songruirui 已提交
2

S
songruirui 已提交
3
**DataShare** 用于应用管理其自身数据,也提供了其他应用共享以及管理其数据的方法,支持同个设备上应用之间的数据共享。
S
songruirui 已提交
4 5

>**说明:** 
S
songruirui 已提交
6
>
S
songruirui 已提交
7 8 9 10 11
>本模块首批接口从API version 9开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。


## 导入模块

S
songruirui 已提交
12
```ts
S
songruirui 已提交
13 14 15 16 17 18 19 20 21 22
import Ability from '@ohos.application.Ability'
import dataShare from '@ohos.data.dataShare'
```


## dataShare.createDataShareHelper

createDataShareHelper(context: Context, uri: string, callback: AsyncCallback<DataShareHelper>): void;
createDataShareHelper(context: Context, uri: string): Promise<DataShareHelper>;

S
songruirui 已提交
23
创建DataShare工具类,创建helper对象时将连接服务端,与服务端取得连接后或超时后将返回helper实例,此方法为异步方法。在与服务端取得连接后可使用DataShare工具类提供的方法访问或管理服务端的数据,若未连接上服务端,调用工具类提供的方法时将返回error code。
S
songruirui 已提交
24

S
songruirui 已提交
25
**系统能力:**  SystemCapability.DistributedDataManager.DataShare.Consumer。
S
songruirui 已提交
26 27 28 29 30

**参数:**

| 参数名   | 参数类型                                                 | 必填 | 说明                                                         |
| -------- | -------------------------------------------------------- | ---- | ------------------------------------------------------------ |
S
songruirui 已提交
31
| context  | [Context](js-apis-application-context.md#context)        | 是   | 应用的上下文环境。                                           |
S
songruirui 已提交
32
| uri      | string                                                   | 是   | 指示要打开的文件的路径。                                     |
S
songruirui 已提交
33
| callback | AsyncCallback<[DataShareHelper](#datasharehelper)> | 是   | DataShareHelper实例创建完成后调用的回调,返回DataShareHelper对象实例。 |
S
songruirui 已提交
34 35 36

**示例:**

S
songruirui 已提交
37 38 39
```ts
import dataShare from '@ohos.data.dataShare'

S
songruirui 已提交
40
let dseUri = ("datashare:///com.samples.datasharetest.DataShare");
S
songruirui 已提交
41 42 43 44 45
dataShare.createDataShareHelper(this.context, dseUri, (err, data) => {
    if (err != undefined) {
        console.info("createDataShareHelper fail, error message : " + err);
    } else {
        console.info("createDataShareHelper end, data : " + data);
S
songruirui 已提交
46 47 48 49 50 51 52 53 54 55 56
        let dataShareHelper = data;
    }
});
```

## DataShareHelper

### openFile

openFile(uri: string, mode: string, callback: AsyncCallback<number>): void

S
songruirui 已提交
57 58 59
打开URI所指定的远程路径中的文件(callback形式)。

**系统能力:**  SystemCapability.DistributedDataManager.DataShare.Consumer。
S
songruirui 已提交
60 61 62 63 64 65 66 67 68 69 70

**参数:**

| 名称     | 类型                  | 必填 | 描述                               |
| -------- | --------------------- | ---- | ---------------------------------- |
| uri      | string                | 是   | 指示要打开的文件的路径。           |
| mode     | string                | 是   | 指示文件打开模式‘rwt’。            |
| callback | AsyncCallback<number> | 是   | 被指定的回调方法,返回文件描述符。 |

**示例:**

S
songruirui 已提交
71 72 73 74 75 76 77
```ts
// Refer to the createDataShareHelper for the method of obtaining dataShareHelper
let dataShareHelper;
let uri = ("datashare:///com.samples.datasharetest.DataShare");
dataShareHelper.openFile(uri, "rwt", (err, data) => {
    if (err != undefined) {
        console.info("openFile fail, error message : " + err);
S
songruirui 已提交
78
    }erse {
S
songruirui 已提交
79
        console.info("openFile end, data : " + data);
S
songruirui 已提交
80 81 82 83 84 85 86 87 88
        let fd = data;
    }
});
```

### openFile

openFile(uri: string, mode: string): Promise<number>

S
songruirui 已提交
89 90 91
打开URI所指定的远程路径中的文件(Promise形式)。

**系统能力:**  SystemCapability.DistributedDataManager.DataShare.Consumer。
S
songruirui 已提交
92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107

**参数:**

| 名称 | 类型   | 必填 | 描述                    |
| ---- | ------ | ---- | ----------------------- |
| uri  | string | 是   | 指示要打开的文件的路径  |
| mode | string | 是   | 指示文件打开模式‘rwt’。 |

**返回值:**

| 类型            | 说明             |
| --------------- | ---------------- |
| Promise<number> | 返回文件描述符。 |

**示例:**

S
songruirui 已提交
108 109 110 111 112 113 114
```ts
// Refer to the createDataShareHelper for the method of obtaining dataShareHelper
let dataShareHelper;
let uri = ("datashare:///com.samples.datasharetest.DataShare");
dataShareHelper.openFile(uri, "rwt").then((data) => {
    console.info("openFile end, data : " + data);
    let fd = data;
S
songruirui 已提交
115
}).catch((err) => {
S
songruirui 已提交
116
	console.info("openFile fail, error message : " + err); 
S
songruirui 已提交
117 118 119 120 121 122 123
})
```

### on('dataChange')

on(type: 'dataChange', uri: string, callback: AsyncCallback\<void>): void

S
songruirui 已提交
124 125 126
注册观察者以订阅给定uri指定的数据callback通知。若用户(订阅者)已注册了观察者,当有其他用户触发了变更通知时(调用了下文中的notifyChange方法),订阅者将会接受到callback通知。

**系统能力:**  SystemCapability.DistributedDataManager.DataShare.Consumer。
S
songruirui 已提交
127 128 129 130 131 132 133 134 135 136 137

**参数:**

| 名称     | 类型                 | 必填 | 描述                     |
| -------- | -------------------- | ---- | ------------------------ |
| type     | string               | 是   | 数据更改。               |
| uri      | string               | 是   | 指示要操作的数据的路径。 |
| callback | AsyncCallback\<void> | 是   | 指示数据更改时的回调。   |

**示例:**

S
songruirui 已提交
138 139 140 141
```ts
// Refer to the createDataShareHelper for the method of obtaining dataShareHelper
let dataShareHelper;
let uri = ("datashare:///com.samples.datasharetest.DataShare");
S
songruirui 已提交
142 143 144 145 146 147 148 149 150 151 152 153 154
dataShareHelper.on("dataChange", uri, onCallback);

export function onCallback() {
    console.info("**** Observer on callback ****");
}
```

### off('dataChange')

off(type: 'dataChange', uri: string, callback?: AsyncCallback\<void>): void

注消观察者以停止观察给定uri指定的数据callback通知。

S
songruirui 已提交
155 156
**系统能力:**  SystemCapability.DistributedDataManager.DataShare.Consumer。

S
songruirui 已提交
157 158 159 160 161 162 163 164 165 166
**参数:**

| 名称     | 类型                 | 必填 | 描述                     |
| -------- | -------------------- | ---- | ------------------------ |
| type     | string               | 是   | 数据更改。               |
| uri      | string               | 是   | 指示要操作的数据的路径。 |
| callback | AsyncCallback\<void> | 否   | 指示已注册的回调。       |

**示例:**

S
songruirui 已提交
167 168 169 170
```ts
// Refer to the createDataShareHelper for the method of obtaining dataShareHelper
let dataShareHelper;
let uri = ("datashare:///com.samples.datasharetest.DataShare");
S
songruirui 已提交
171 172 173 174 175 176 177
dataShareHelper.off("dataChange", uri, offCallback);

export function offCallback() {
    console.info("**** Observer off callback ****");
}
```

S
songruirui 已提交
178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241
### notifyChange

notifyChange(uri: string, callback: AsyncCallback\<void>): void

通知已注册的观察者uri指定的数据资源的更改(callback形式)。

**系统能力:**  SystemCapability.DistributedDataManager.DataShare.Consumer。

**参数:**

| 名称     | 类型                 | 必填 | 描述                     |
| -------- | -------------------- | ---- | ------------------------ |
| uri      | string               | 是   | 指示要操作的数据的路径。 |
| callback | AsyncCallback\<void> | 是   | 回调方法。               |

**示例:**

```ts
// Refer to the createDataShareHelper for the method of obtaining dataShareHelper
let dataShareHelper;
let uri = ("datashare:///com.samples.datasharetest.DataShare");
dataShareHelper.notifyChange(uri, () => {
    console.log("***** notifyChange *****");
});
```

### notifyChange

notifyChange(uri: string): Promise\<void>

通知已注册的观察者uri指定的数据资源的更改(Promise形式)。

**系统能力:**  SystemCapability.DistributedDataManager.DataShare.Consumer。

**参数:**

| 名称 | 类型   | 必填 | 描述                     |
| ---- | ------ | ---- | ------------------------ |
| uri  | string | 是   | 指示要操作的数据的路径。 |

**返回值:**

| 类型           | 说明                  |
| -------------- | --------------------- |
| Promise\<void> | 返回值为Promise对象。 |

**示例:**

```ts
// Refer to the createDataShareHelper for the method of obtaining dataShareHelper
let dataShareHelper;
let uri = ("datashare:///com.samples.datasharetest.DataShare");
dataShare.createDataShareHelper(this.context, uri, (err, data) => {
    if (err != undefined) {
        console.info("createDataShareHelper fail, error message : " + err);
    } else {
        console.info("createDataShareHelper end, data : " + data);
        dataShareHelper = data;
    }
});

dataShareHelper.notifyChange(uri);
```

S
songruirui 已提交
242 243 244 245
### getType

getType(uri: string, callback: AsyncCallback\<string>): void

S
songruirui 已提交
246 247 248
获取URI所指定的数据的MIME类型(callback形式)。

**系统能力:**  SystemCapability.DistributedDataManager.DataShare.Consumer。
S
songruirui 已提交
249 250 251 252 253 254 255 256 257 258

**参数:**

| 名称     | 类型                   | 必填 | 描述                                          |
| -------- | ---------------------- | ---- | --------------------------------------------- |
| uri      | string                 | 是   | 指示要操作的数据的路径。                      |
| callback | AsyncCallback\<string> | 是   | 回调方法,返回与uri指定的数据匹配的MIME类型。 |

**示例:**

S
songruirui 已提交
259 260 261 262 263 264 265 266 267 268 269
```ts
// Refer to the createDataShareHelper for the method of obtaining dataShareHelper
let dataShareHelper;
let uri = ("datashare:///com.samples.datasharetest.DataShare");
dataShareHelper.getType(uri, (err, data)=>{
    if (err != undefined) {
        console.log("getType fail, error message : " + err);
    }else{
        console.log("getType end, data : " + data);
        let result = data;
    }         
S
songruirui 已提交
270 271 272 273 274 275 276
});
```

### getType

getType(uri: string): Promise\<string>

S
songruirui 已提交
277 278 279
获取URI所指定数据的MIME类型(Promise形式)。

**系统能力:**  SystemCapability.DistributedDataManager.DataShare.Consumer。
S
songruirui 已提交
280 281 282 283 284 285 286 287 288 289 290 291 292 293 294

**参数:**

| 名称 | 类型   | 必填 | 描述                     |
| ---- | ------ | ---- | ------------------------ |
| uri  | string | 是   | 指示要操作的数据的路径。 |

**返回值:**

| 类型             | 说明                                |
| ---------------- | ----------------------------------- |
| Promise\<string> | 返回与uri指定的数据匹配的MIME类型。 |

**示例:**

S
songruirui 已提交
295 296 297 298
```ts
// Refer to the createDataShareHelper for the method of obtaining dataShareHelper
let dataShareHelper;
let uri = ("datashare:///com.samples.datasharetest.DataShare");
S
songruirui 已提交
299
dataShareHelper.getType(uri).then((data) => {
S
songruirui 已提交
300
    console.log("getType end, data : " + data);
S
songruirui 已提交
301
}).catch((err) => {
S
songruirui 已提交
302
    console.log("getType fail, error message : " + err);
S
songruirui 已提交
303 304 305 306 307 308 309 310 311
});
```

### getFileTypes

getFileTypes(uri: string, mimeTypeFilter: string, callback: AsyncCallback<Array\<string>>): void

获取支持的文件的MIME类型(callback形式)。

S
songruirui 已提交
312 313
**系统能力:**  SystemCapability.DistributedDataManager.DataShare.Consumer。

S
songruirui 已提交
314 315 316 317 318 319 320 321 322 323
**参数:**

| 名称           | 类型                           | 必填 | 描述                               |
| -------------- | ------------------------------ | ---- | ---------------------------------- |
| uri            | string                         | 是   | 指示要获取的文件的路径。           |
| mimeTypeFilter | string                         | 是   | 指示要获取的文件的MIME类型。       |
| callback       | AsyncCallback\<Array\<string>> | 是   | 回调方法,返回匹配的MIME类型数组。 |

**示例:**

S
songruirui 已提交
324 325 326 327
```ts
// Refer to the createDataShareHelper for the method of obtaining dataShareHelper
let dataShareHelper;
let uri = ("datashare:///com.samples.datasharetest.DataShare");
S
songruirui 已提交
328 329
let mimeTypeFilter = "image/*";
dataShareHelper.getFileTypes(uri, mimeTypeFilter, (err,data) => {
S
songruirui 已提交
330 331 332 333 334
    if (err != undefined) {
        console.log("dataShareHelper fail, error message : " + err);
    }else{
        console.log("dataShareHelper end, data : " + data);
    }
S
songruirui 已提交
335 336 337 338 339 340 341 342 343 344 345
});
```



### getFileTypes

getFileTypes(uri: string, mimeTypeFilter: string): Promise\<Array\<string>>

获取支持的文件的MIME类型(Promise形式)。

S
songruirui 已提交
346 347
**系统能力:**  SystemCapability.DistributedDataManager.DataShare.Consumer。

S
songruirui 已提交
348 349 350 351 352 353 354 355 356 357 358 359 360 361 362
**参数:**

| 名称           | 类型   | 必填 | 描述                         |
| -------------- | ------ | ---- | ---------------------------- |
| uri            | string | 是   | 指示要获取的文件的路径。     |
| mimeTypeFilter | string | 是   | 指示要获取的文件的MIME类型。 |

**返回值:**

| 类型                     | 说明                     |
| ------------------------ | ------------------------ |
| Promise\<Array\<string>> | 返回匹配的MIME类型数组。 |

**示例:**

S
songruirui 已提交
363 364 365 366
```ts
// Refer to the createDataShareHelper for the method of obtaining dataShareHelper
let dataShareHelper;
let uri = ("datashare:///com.samples.datasharetest.DataShare");
S
songruirui 已提交
367 368
let mimeTypeFilter = "image/*";
dataShareHelper.getFileTypes(uri, mimeTypeFilter).then((data) => {
S
songruirui 已提交
369
	console.log("dataShareHelper end, data : " + data);
S
songruirui 已提交
370
}).catch((err) => {
S
songruirui 已提交
371
	console.log("dataShareHelper fail, error message : " + err);
S
songruirui 已提交
372 373 374 375 376 377 378
});
```

### normalizeUri

normalizeUri(uri: string, callback: AsyncCallback\<string>): void

S
songruirui 已提交
379 380 381
将给定的DataShare uri转换为规范化uri(callback形式)。

**系统能力:**  SystemCapability.DistributedDataManager.DataShare.Consumer。
S
songruirui 已提交
382 383 384

**参数:**

S
songruirui 已提交
385 386 387 388
| 名称     | 类型                   | 必填 | 描述                                                     |
| -------- | ---------------------- | ---- | -------------------------------------------------------- |
| uri      | string                 | 是   | 指示要规范化的uri对象。                                  |
| callback | AsyncCallback\<string> | 是   | 回调方法。如果支持uri规范化或null,则返回规范化uri对象。 |
S
songruirui 已提交
389 390 391

**示例:**

S
songruirui 已提交
392 393 394 395 396 397 398 399 400 401
```ts
// Refer to the createDataShareHelper for the method of obtaining dataShareHelper
let dataShareHelper;
let uri = ("datashare:///com.samples.datasharetest.DataShare");
dataShareHelper.normalizeUri(uri, (err, data) => {
    if (err != undefined) {
        console.log("normalizeUri fail, error message : " + err);
    }else{
        console.log("normalizeUri = " + data);
    }
S
songruirui 已提交
402 403 404 405 406 407 408
});
```

### normalizeUri

normalizeUri(uri: string): Promise\<string>

S
songruirui 已提交
409 410 411
将给定的DataShare uri转换为规范化uri(Promise形式)。

**系统能力:**  SystemCapability.DistributedDataManager.DataShare.Consumer。
S
songruirui 已提交
412 413 414 415 416 417 418 419 420

**参数:**

| 名称 | 类型   | 必填 | 描述                    |
| ---- | ------ | ---- | ----------------------- |
| uri  | string | 是   | 指示要规范化的uri对象。 |

**返回值:**

S
songruirui 已提交
421 422 423
| 类型             | 说明                                           |
| ---------------- | ---------------------------------------------- |
| Promise\<string> | 如果支持uri规范化或null,则返回规范化uri对象。 |
S
songruirui 已提交
424 425 426

**示例:**

S
songruirui 已提交
427 428 429 430
```ts
// Refer to the createDataShareHelper for the method of obtaining dataShareHelper
let dataShareHelper;
let uri = ("datashare:///com.samples.datasharetest.DataShare");
S
songruirui 已提交
431
dataShareHelper.normalizeUri(uri).then((data) => {
S
songruirui 已提交
432
    console.log("normalizeUri = " + data);
S
songruirui 已提交
433
}).catch((err) => {
S
songruirui 已提交
434
    console.log("normalizeUri fail, error message : " + err);
S
songruirui 已提交
435 436 437 438 439 440 441
});
```

### denormalizeUri

denormalizeUri(uri: string, callback: AsyncCallback\<string>): void

S
songruirui 已提交
442 443 444
将由normalizeUri(uri)生成的规范化uri转换为非规范化uri(callback形式)。

**系统能力:**  SystemCapability.DistributedDataManager.DataShare.Consumer。
S
songruirui 已提交
445 446 447 448 449 450 451 452 453 454

**参数:**

| 名称     | 类型                   | 必填 | 描述                                                |
| -------- | ---------------------- | ---- | --------------------------------------------------- |
| uri      | string                 | 是   | 指示要规范化的uri对象。                             |
| callback | AsyncCallback\<string> | 是   | 回调方法。如果反规范化成功,则返回反规范化uri对象。 |

**示例:**

S
songruirui 已提交
455 456 457 458 459 460 461 462 463 464
```ts
// Refer to the createDataShareHelper for the method of obtaining dataShareHelper
let dataShareHelper;
let uri = ("datashare:///com.samples.datasharetest.DataShare");
dataShareHelper.denormalizeUri(uri, (err, data) => {
    if (err != undefined) {
        console.log("denormalizeUri fail, error message : " + err);
    }else{
        console.log("denormalizeUri = " + data);
    }
S
songruirui 已提交
465 466 467 468 469 470 471
});
```

### denormalizeUri

denormalizeUri(uri: string): Promise\<string>

S
songruirui 已提交
472 473 474
将由normalizeUri(uri)生成的规范化uri转换为非规范化uri(Promise形式)。

**系统能力:**  SystemCapability.DistributedDataManager.DataShare.Consumer。
S
songruirui 已提交
475 476 477 478 479 480 481 482 483 484 485 486 487 488 489

**参数:**

| 名称 | 类型   | 必填 | 描述                    |
| ---- | ------ | ---- | ----------------------- |
| uri  | string | 是   | 指示要规范化的uri对象。 |

**返回值:**

| 类型             | 说明                                      |
| ---------------- | ----------------------------------------- |
| Promise\<string> | 如果反规范化成功,则返回反规范化uri对象。 |

**示例:**

S
songruirui 已提交
490 491 492 493
```ts
// Refer to the createDataShareHelper for the method of obtaining dataShareHelper
let dataShareHelper;
let uri = ("datashare:///com.samples.datasharetest.DataShare");
S
songruirui 已提交
494
dataShareHelper.denormalizeUri(uri).then((data) => {
S
songruirui 已提交
495
    console.log("denormalizeUri = " + data);
S
songruirui 已提交
496
}).catch((err) => {
S
songruirui 已提交
497
    console.log("denormalizeUri fail, error message : " + err);
S
songruirui 已提交
498 499 500 501 502 503 504
});
```

### insert

insert(uri: string, value: ValuesBucket, callback: AsyncCallback\<number>): void

S
songruirui 已提交
505 506 507
将单条数据记录插入数据库(callback形式)。

**系统能力:**  SystemCapability.DistributedDataManager.DataShare.Consumer。
S
songruirui 已提交
508 509 510

**参数:**

S
songruirui 已提交
511 512 513 514 515
| 名称     | 类型                                                      | 必填 | 描述                                                         |
| -------- | --------------------------------------------------------- | ---- | ------------------------------------------------------------ |
| uri      | string                                                    | 是   | 指示要插入的数据的路径。                                     |
| value    | [ValuesBucket](js-apis-data-ValuesBucket.md#valuesbucket) | 是   | 指示要插入的数据记录。如果此参数为空,将插入一个空行。       |
| callback | AsyncCallback\<number>                                    | 是   | 回调方法,返回插入数据记录的索引。(能否返回索引取决于服务端所使用的数据库) |
S
songruirui 已提交
516 517 518

**示例:**

S
songruirui 已提交
519 520 521 522
```ts
// Refer to the createDataShareHelper for the method of obtaining dataShareHelper
let dataShareHelper;
let uri = ("datashare:///com.samples.datasharetest.DataShare");
S
songruirui 已提交
523 524 525 526 527 528
const valueBucket = {
    "name": "rose",
    "age": 22,
    "salary": 200.5,
    "blobType": u8,
}
S
songruirui 已提交
529 530 531 532 533 534
dataShareHelper.insert(uri, valueBucket, (err, data) => {
    if (err != undefined) {
        console.log("insert fail, error message : " + err);
    }else{
        console.log("insert end, data : " + data);
    }
S
songruirui 已提交
535 536 537 538 539 540 541
});
```

### insert

insert(uri: string, value: ValuesBucket): Promise\<number>

S
songruirui 已提交
542 543 544
将单条数据记录插入数据库(Promise形式)。

**系统能力:**  SystemCapability.DistributedDataManager.DataShare.Consumer。
S
songruirui 已提交
545 546 547

**参数:**

S
songruirui 已提交
548 549 550 551
| 名称  | 类型                                                      | 必填 | 描述                                                   |
| ----- | --------------------------------------------------------- | ---- | ------------------------------------------------------ |
| uri   | string                                                    | 是   | 指示要插入的数据的路径。                               |
| value | [ValuesBucket](js-apis-data-ValuesBucket.md#valuesbucket) | 是   | 指示要插入的数据记录。如果此参数为空,将插入一个空行。 |
S
songruirui 已提交
552 553 554

**返回值:**

S
songruirui 已提交
555 556 557
| 类型             | 说明                                                         |
| ---------------- | ------------------------------------------------------------ |
| Promise\<number> | 返回插入数据记录的索引。(能否返回索引取决于服务端所使用的数据库) |
S
songruirui 已提交
558 559 560

**示例:**

S
songruirui 已提交
561 562 563 564
```ts
// Refer to the createDataShareHelper for the method of obtaining dataShareHelper
let dataShareHelper;
let uri = ("datashare:///com.samples.datasharetest.DataShare");
S
songruirui 已提交
565 566 567 568 569 570
const valueBucket = {
    "name": "rose1",
    "age": 221,
    "salary": 20.5,
    "blobType": u8,
}
S
songruirui 已提交
571 572
dataShareHelper.insert(uri, valueBucket).then((data) => {
    console.log("insert end, data : " + data);
S
songruirui 已提交
573
}).catch((err) => {
S
songruirui 已提交
574
    console.log("insert fail, error message : " + err);
S
songruirui 已提交
575 576 577 578 579 580 581
});
```

### batchInsert

batchInsert(uri: string, values: Array\<ValuesBucket>, callback: AsyncCallback\<number>): void

S
songruirui 已提交
582 583 584
将批量数据插入数据库(callback形式)。

**系统能力:**  SystemCapability.DistributedDataManager.DataShare.Consumer。
S
songruirui 已提交
585 586 587

**参数:**

S
songruirui 已提交
588 589 590 591 592
| 名称     | 类型                                                         | 必填 | 描述                                                         |
| -------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ |
| uri      | string                                                       | 是   | 指示要插入的数据的路径。                                     |
| values   | Array\<[ValuesBucket](js-apis-data-ValuesBucket.md#valuesbucket)> | 是   | 指示要插入的数据记录。                                       |
| callback | AsyncCallback\<number>                                       | 是   | 回调方法,返回插入的数据记录数。(能否返回记录数取决于服务端所使用的数据库) |
S
songruirui 已提交
593 594 595

**示例:**

S
songruirui 已提交
596 597 598 599 600
```ts
// Refer to the createDataShareHelper for the method of obtaining dataShareHelper
let dataShareHelper;
let uri = ("datashare:///com.samples.datasharetest.DataShare");
let vbs = new Array({"name": "roe11", "age": 21, "salary": 20.5, "blobType": u8,},
S
songruirui 已提交
601 602
                     {"name": "roe12", "age": 21, "salary": 20.5, "blobType": u8,},
                     {"name": "roe13", "age": 21, "salary": 20.5, "blobType": u8,})
S
songruirui 已提交
603 604 605 606 607 608
dataShareHelper.batchInsert(uri, vbs, (err, data) => {
    if (err != undefined) {
        console.log("batchInsert fail, error message : " + err);
    }else{
        console.log("batchInsert end, data : " + data);
    }
S
songruirui 已提交
609 610 611 612 613 614 615
});
```

### batchInsert

batchInsert(uri: string, values: Array\<ValuesBucket>): Promise\<number>

S
songruirui 已提交
616 617 618
将批量数据插入数据库(Promise形式)。

**系统能力:**  SystemCapability.DistributedDataManager.DataShare.Consumer。
S
songruirui 已提交
619 620 621

**参数:**

S
songruirui 已提交
622 623 624 625
| 名称   | 类型                                                         | 必填 | 描述                     |
| ------ | ------------------------------------------------------------ | ---- | ------------------------ |
| uri    | string                                                       | 是   | 指示要插入的数据的路径。 |
| values | Array\<[ValuesBucket](js-apis-data-ValuesBucket.md#valuesbucket)> | 是   | 指示要插入的数据记录。   |
S
songruirui 已提交
626 627 628

**返回值:**

S
songruirui 已提交
629 630 631
| 类型             | 说明                                                         |
| ---------------- | ------------------------------------------------------------ |
| Promise\<number> | 返回插入的数据记录数。(能否返回记录数取决于服务端所使用的数据库) |
S
songruirui 已提交
632 633 634

**示例:**

S
songruirui 已提交
635 636 637 638 639
```ts
// Refer to the createDataShareHelper for the method of obtaining dataShareHelper
let dataShareHelper;
let uri = ("datashare:///com.samples.datasharetest.DataShare");
let vbs = new Array({"name": "roe11", "age": 21, "salary": 20.5, "blobType": u8,},
S
songruirui 已提交
640 641
                     {"name": "roe12", "age": 21, "salary": 20.5, "blobType": u8,},
                     {"name": "roe13", "age": 21, "salary": 20.5, "blobType": u8,})
S
songruirui 已提交
642 643
dataShareHelper.batchInsert(uri, vbs).then((data) => {
    console.log("batchInsert end, data : " + data);
S
songruirui 已提交
644
}).catch((err) => {
S
songruirui 已提交
645
    console.log("batchInsert fail, error message : " + err);
S
songruirui 已提交
646 647 648 649 650 651 652
});
```

### delete

delete(uri: string, predicates: DataSharePredicates, callback: AsyncCallback\<number>): void

S
songruirui 已提交
653 654 655
从数据库中删除一条或多条数据记录(callback形式)。

**系统能力:**  SystemCapability.DistributedDataManager.DataShare.Consumer。
S
songruirui 已提交
656 657 658

**参数:**

S
songruirui 已提交
659 660 661 662 663
| 名称       | 类型                                                         | 必填 | 描述                                                         |
| ---------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ |
| uri        | string                                                       | 是   | 指示要删除的数据的路径。                                     |
| predicates | [DataSharePredicates](js-apis-data-DataSharePredicates.md#datasharepredicates) | 是   | 指示筛选条件。当此参数为null时,应定义处理逻辑。(具体所支持的谓词方法取决于服务端所选用的数据库,如KVDB的删除目前仅支持inKeys谓词) |
| callback   | AsyncCallback\<number>                                       | 是   | 回调方法,返回已删除的数据记录数。(能否返回已删除的数目取决于服务端所使用的数据库) |
S
songruirui 已提交
664 665 666

**示例:**

S
songruirui 已提交
667 668 669 670
```ts
// Refer to the createDataShareHelper for the method of obtaining dataShareHelper
let dataShareHelper;
let uri = ("datashare:///com.samples.datasharetest.DataShare");
S
songruirui 已提交
671 672
let da = new dataShare.DataSharePredicates();
da.equalTo("name", "ZhangSan");
S
songruirui 已提交
673 674 675 676 677 678
dataShareHelper.delete(uri, da, (err, data) => {
    if (err != undefined) {
        console.log("delete fail, error message : " + err);
    }else{
        console.log("delete end, data : " + data);
    }
S
songruirui 已提交
679 680 681 682 683 684 685
});
```

### delete

delete(uri: string, predicates: DataSharePredicates): Promise\<number>

S
songruirui 已提交
686 687 688
从数据库中删除一条或多条数据记录(Promise形式)。

**系统能力:**  SystemCapability.DistributedDataManager.DataShare.Consumer。
S
songruirui 已提交
689 690 691

**参数:**

S
songruirui 已提交
692 693 694 695
| 名称       | 类型                                                         | 必填 | 描述                                                         |
| ---------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ |
| uri        | string                                                       | 是   | 指示要删除的数据的路径。                                     |
| predicates | [DataSharePredicates](js-apis-data-DataSharePredicates.md#datasharepredicates) | 是   | 指示筛选条件。当此参数为null时,应定义处理逻辑。(具体所支持的谓词方法取决于服务端所选用的数据库,如KVDB的删除目前仅支持inKeys谓词) |
S
songruirui 已提交
696 697 698

**返回值:**

S
songruirui 已提交
699 700 701
| 类型             | 说明                                                         |
| ---------------- | ------------------------------------------------------------ |
| Promise\<number> | 返回已删除的数据记录数。(能否返回已删除的数目取决于服务端所使用的数据库) |
S
songruirui 已提交
702 703 704

**示例:**

S
songruirui 已提交
705 706 707 708
```ts
// Refer to the createDataShareHelper for the method of obtaining dataShareHelper
let dataShareHelper;
let uri = ("datashare:///com.samples.datasharetest.DataShare");
S
songruirui 已提交
709 710
let da = new dataShare.DataSharePredicates();
da.equalTo("name", "ZhangSan");
S
songruirui 已提交
711 712
dataShareHelper.delete(uri, da).then((data) => {
    console.log("delete end, data : " + data);
S
songruirui 已提交
713
}).catch((err) => {
S
songruirui 已提交
714
    console.log("delete fail, error message : " + err);
S
songruirui 已提交
715 716 717 718 719 720 721 722 723
});
```

### update

update(uri: string, predicates: DataSharePredicates, value: ValuesBucket, callback: AsyncCallback<number>): void

更新数据库中的数据记录(callback形式)。

S
songruirui 已提交
724 725
**系统能力:**  SystemCapability.DistributedDataManager.DataShare.Consumer。

S
songruirui 已提交
726 727
**参数:**

S
songruirui 已提交
728 729 730 731 732 733
| 名称       | 类型                                                         | 必填 | 描述                                                         |
| ---------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ |
| uri        | string                                                       | 是   | 指示要更新的数据的路径。                                     |
| predicates | [DataSharePredicates](js-apis-data-DataSharePredicates.md#datasharepredicates) | 是   | 指示筛选条件。当此参数为null时,应定义处理逻辑。(是否支持谓词取决于服务端所选用的数据库,如KVDB并不支持谓词,仅RDB支持) |
| value      | [ValuesBucket](js-apis-data-ValuesBucket.md#valuesbucket)    | 是   | 指示要更新的数据。                                           |
| callback   | AsyncCallback\<number>                                       | 是   | 回调方法,返回更新的数据记录数。(能否返回更新的数据记录数取决于服务端所使用的数据库) |
S
songruirui 已提交
734 735 736

**示例:**

S
songruirui 已提交
737 738 739 740
```ts
// Refer to the createDataShareHelper for the method of obtaining dataShareHelper
let dataShareHelper;
let uri = ("datashare:///com.samples.datasharetest.DataShare");
S
songruirui 已提交
741 742 743 744 745 746 747 748
let da = new dataShare.DataSharePredicates();
da.equalTo("name", "ZhangSan");
const va = {
    "name": "roe1",
    "age": 21,
    "salary": 20.5,
    "blobType": u8,
}
S
songruirui 已提交
749 750 751 752 753 754
dataShareHelper.update(uri, da, va, (err, data) => {
    if (err != undefined) {
        console.log("update fail, error message : " + err);
    }else{
        console.log("update end, data : " + data);
    }
S
songruirui 已提交
755 756 757 758 759 760 761 762 763
});
```

### update

update(uri: string, predicates: DataSharePredicates, value: ValuesBucket): Promise<number>

更新数据库中的数据记录(Promise形式)。

S
songruirui 已提交
764 765
**系统能力:**  SystemCapability.DistributedDataManager.DataShare.Consumer。

S
songruirui 已提交
766 767
**参数:**

S
songruirui 已提交
768 769 770 771 772
| 名称       | 类型                                                         | 必填 | 描述                                                         |
| ---------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ |
| uri        | string                                                       | 是   | 指示要更新的数据的路径。                                     |
| predicates | [DataSharePredicates](js-apis-data-DataSharePredicates.md#datasharepredicates) | 是   | 指示筛选条件。当此参数为null时,应定义处理逻辑。(是否支持谓词取决于服务端所选用的数据库,如KVDB并不支持谓词,仅RDB支持) |
| value      | [ValuesBucket](js-apis-data-ValuesBucket.md#valuesbucket)    | 是   | 指示要更新的数据。                                           |
S
songruirui 已提交
773 774 775

**返回值:**

S
songruirui 已提交
776 777 778
| 类型             | 说明                                                         |
| ---------------- | ------------------------------------------------------------ |
| Promise\<number> | 返回更新的数据记录数。(能否返回更新的数据记录数取决于服务端所使用的数据库) |
S
songruirui 已提交
779 780 781

**示例:**

S
songruirui 已提交
782 783 784 785
```ts
// Refer to the createDataShareHelper for the method of obtaining dataShareHelper
let dataShareHelper;
let uri = ("datashare:///com.samples.datasharetest.DataShare");
S
songruirui 已提交
786 787 788 789 790 791 792 793
let da = new dataShare.DataSharePredicates();
da.equalTo("name", "ZhangSan");
const va = {
    "name": "roe1",
    "age": 21,
    "salary": 20.5,
    "blobType": u8,
}
S
songruirui 已提交
794 795
dataShareHelper.update(uri, da, va).then((data) => {
    console.log("update end, data : " + data);
S
songruirui 已提交
796
}).catch((err) => {
S
songruirui 已提交
797
    console.log("update fail, error message : " + err);
S
songruirui 已提交
798 799 800 801 802 803 804 805 806
});
```

### query

query(uri: string, predicates: DataSharePredicates, columns: Array<string>, callback: AsyncCallback<DataShareResultSet>): void

查询数据库中的数据(callback形式)。

S
songruirui 已提交
807 808
**系统能力:**  SystemCapability.DistributedDataManager.DataShare.Consumer。

S
songruirui 已提交
809 810
**参数:**

S
songruirui 已提交
811 812 813 814 815 816
| 名称       | 类型                                                         | 必填 | 描述                                                         |
| ---------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ |
| uri        | string                                                       | 是   | 指示要查询的数据的路径。                                     |
| predicates | [DataSharePredicates](js-apis-data-DataSharePredicates.md#datasharepredicates) | 是   | 指示筛选条件。当此参数为null时,应定义处理逻辑。(具体所支持的谓词方法取决于服务端所选用的数据库,如KVDB目前仅支持inKeys和prefixKey) |
| columns    | Array<string>                                                | 是   | 指示要查询的列。如果此参数为空,则查询所有列。               |
| callback   | AsyncCallback\<[DataShareResultSet](js-apis-data-DataShareResultSet.md#datashareresultset)> | 是   | 回调方法,返回查询结果。                                     |
S
songruirui 已提交
817 818 819

**示例:**

S
songruirui 已提交
820 821 822 823
```ts
// Refer to the createDataShareHelper for the method of obtaining dataShareHelper
let dataShareHelper;
let uri = ("datashare:///com.samples.datasharetest.DataShare");
S
songruirui 已提交
824 825 826
let columns = ["*"]
let da = new dataShare.DataSharePredicates();
da.equalTo("name", "ZhangSan");
S
songruirui 已提交
827 828 829 830 831 832
dataShareHelper.query(uri, da, columns, (err, data) => {
    if (err != undefined) {
        console.log("query fail, error message : " + err);
    }else{
        console.log("query end, data : " + data);
    }
S
songruirui 已提交
833 834 835 836 837 838 839 840 841 842 843
});
```



### query

query(uri: string, predicates: DataSharePredicates, columns: Array<string>): Promise<DataShareResultSet>

查询数据库中的数据(Promise形式)。

S
songruirui 已提交
844 845
**系统能力:**  SystemCapability.DistributedDataManager.DataShare.Consumer。

S
songruirui 已提交
846 847
**参数:**

S
songruirui 已提交
848 849 850 851 852
| 名称       | 类型                                                         | 必填 | 描述                                                         |
| ---------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ |
| uri        | string                                                       | 是   | 指示要查询的数据的路径。                                     |
| predicates | [DataSharePredicates](js-apis-data-DataSharePredicates.md#datasharepredicates) | 是   | 指示筛选条件。当此参数为null时,应定义处理逻辑。(具体所支持的谓词方法取决于服务端所选用的数据库,如KVDB目前仅支持inKeys和prefixKey) |
| columns    | Array<string>                                                | 是   | 指示要查询的列。如果此参数为空,则查询所有列。               |
S
songruirui 已提交
853 854 855

**返回值:**

S
songruirui 已提交
856 857 858
| 类型                                                         | 说明           |
| ------------------------------------------------------------ | -------------- |
| Promise\<[DataShareResultSet](js-apis-data-DataShareResultSet.md#datashareresultset)> | 返回查询结果。 |
S
songruirui 已提交
859 860 861

**示例:**

S
songruirui 已提交
862 863 864 865
```ts
// Refer to the createDataShareHelper for the method of obtaining dataShareHelper
let dataShareHelper;
let uri = ("datashare:///com.samples.datasharetest.DataShare");
S
songruirui 已提交
866 867 868
let columns = ["*"]
let da = new dataShare.DataSharePredicates();
da.equalTo("name", "ZhangSan");
S
songruirui 已提交
869 870
dataShareHelper.query(uri, da, columns).then((data) => {
    console.log("query end, data : " + data);
S
songruirui 已提交
871
}).catch((err) => {
S
songruirui 已提交
872
    console.log("query fail, error message : " + err);
S
songruirui 已提交
873 874
});
```