js-apis-data-dataShare.md 33.1 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
import Ability from '@ohos.application.Ability'
import dataShare from '@ohos.data.dataShare'
```


## dataShare.createDataShareHelper

S
songruirui 已提交
20 21
createDataShareHelper(context: Context, uri: string, callback: AsyncCallback<DataShareHelper>): void
createDataShareHelper(context: Context, uri: string): Promise<DataShareHelper>
S
songruirui 已提交
22

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
        let dataShareHelper = data;
    }
});
```

## DataShareHelper

### openFile

S
songruirui 已提交
55
openFile(uri: string, mode: string, callback: AsyncCallback<number>): void
S
songruirui 已提交
56

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

S
songruirui 已提交
59
**系统能力:**  SystemCapability.DistributedDataManager.DataShare.Consumer
S
songruirui 已提交
60 61 62 63 64 65 66

**参数:**

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

**示例:**

S
songruirui 已提交
71 72 73 74 75 76
```ts
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 已提交
77
    }erse {
S
songruirui 已提交
78
        console.info("openFile end, data : " + data);
S
songruirui 已提交
79 80 81 82 83 84 85
        let fd = data;
    }
});
```

### openFile

S
songruirui 已提交
86
openFile(uri: string, mode: string): Promise<number>
S
songruirui 已提交
87

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

S
songruirui 已提交
90
**系统能力:**  SystemCapability.DistributedDataManager.DataShare.Consumer
S
songruirui 已提交
91 92 93 94 95 96 97 98 99 100 101 102

**参数:**

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

**返回值:**

| 类型            | 说明             |
| --------------- | ---------------- |
S
songruirui 已提交
103
| Promise<number> | 返回文件描述符。 |
S
songruirui 已提交
104 105 106

**示例:**

S
songruirui 已提交
107 108 109 110 111 112
```ts
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 已提交
113
}).catch((err) => {
S
songruirui 已提交
114
	console.info("openFile fail, error message : " + err); 
S
songruirui 已提交
115 116 117 118 119
})
```

### on('dataChange')

S
songruirui 已提交
120
on(type: 'dataChange', uri: string, callback: AsyncCallback<void>): void
S
songruirui 已提交
121

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

S
songruirui 已提交
124
**系统能力:**  SystemCapability.DistributedDataManager.DataShare.Consumer
S
songruirui 已提交
125 126 127 128 129 130 131

**参数:**

| 名称     | 类型                 | 必填 | 描述                     |
| -------- | -------------------- | ---- | ------------------------ |
| type     | string               | 是   | 数据更改。               |
| uri      | string               | 是   | 指示要操作的数据的路径。 |
S
songruirui 已提交
132
| callback | AsyncCallback<void> | 是   | 指示数据更改时的回调。   |
S
songruirui 已提交
133 134 135

**示例:**

S
songruirui 已提交
136 137 138
```ts
let dataShareHelper;
let uri = ("datashare:///com.samples.datasharetest.DataShare");
S
songruirui 已提交
139 140 141 142 143 144 145 146 147
dataShareHelper.on("dataChange", uri, onCallback);

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

### off('dataChange')

S
songruirui 已提交
148
off(type: 'dataChange', uri: string, callback?: AsyncCallback<void>): void
S
songruirui 已提交
149 150 151

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

S
songruirui 已提交
152
**系统能力:**  SystemCapability.DistributedDataManager.DataShare.Consumer
S
songruirui 已提交
153

S
songruirui 已提交
154 155 156 157 158 159
**参数:**

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

**示例:**

S
songruirui 已提交
164 165 166
```ts
let dataShareHelper;
let uri = ("datashare:///com.samples.datasharetest.DataShare");
S
songruirui 已提交
167 168 169 170 171 172 173
dataShareHelper.off("dataChange", uri, offCallback);

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

S
songruirui 已提交
174 175
### notifyChange

S
songruirui 已提交
176
notifyChange(uri: string, callback: AsyncCallback<void>): void
S
songruirui 已提交
177 178 179

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

S
songruirui 已提交
180
**系统能力:**  SystemCapability.DistributedDataManager.DataShare.Consumer
S
songruirui 已提交
181 182 183 184 185 186

**参数:**

| 名称     | 类型                 | 必填 | 描述                     |
| -------- | -------------------- | ---- | ------------------------ |
| uri      | string               | 是   | 指示要操作的数据的路径。 |
S
songruirui 已提交
187
| callback | AsyncCallback<void> | 是   | 回调方法。               |
S
songruirui 已提交
188 189 190 191 192 193 194 195 196 197 198 199 200

**示例:**

```ts
let dataShareHelper;
let uri = ("datashare:///com.samples.datasharetest.DataShare");
dataShareHelper.notifyChange(uri, () => {
    console.log("***** notifyChange *****");
});
```

### notifyChange

S
songruirui 已提交
201
notifyChange(uri: string): Promise<void>
S
songruirui 已提交
202 203 204

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

S
songruirui 已提交
205
**系统能力:**  SystemCapability.DistributedDataManager.DataShare.Consumer
S
songruirui 已提交
206 207 208 209 210 211 212 213 214 215 216

**参数:**

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

**返回值:**

| 类型           | 说明                  |
| -------------- | --------------------- |
S
songruirui 已提交
217
| Promise<void> | 返回值为Promise对象。 |
S
songruirui 已提交
218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235

**示例:**

```ts
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 已提交
236 237
### getType

S
songruirui 已提交
238
getType(uri: string, callback: AsyncCallback<string>): void
S
songruirui 已提交
239

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

S
songruirui 已提交
242
**系统能力:**  SystemCapability.DistributedDataManager.DataShare.Consumer
S
songruirui 已提交
243 244 245 246 247 248

**参数:**

| 名称     | 类型                   | 必填 | 描述                                          |
| -------- | ---------------------- | ---- | --------------------------------------------- |
| uri      | string                 | 是   | 指示要操作的数据的路径。                      |
S
songruirui 已提交
249
| callback | AsyncCallback<string> | 是   | 回调方法,返回与uri指定的数据匹配的MIME类型。 |
S
songruirui 已提交
250 251 252

**示例:**

S
songruirui 已提交
253 254 255 256 257 258 259 260 261 262
```ts
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 已提交
263 264 265 266 267
});
```

### getType

S
songruirui 已提交
268
getType(uri: string): Promise<string>
S
songruirui 已提交
269

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

S
songruirui 已提交
272
**系统能力:**  SystemCapability.DistributedDataManager.DataShare.Consumer
S
songruirui 已提交
273 274 275 276 277 278 279 280 281 282 283

**参数:**

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

**返回值:**

| 类型             | 说明                                |
| ---------------- | ----------------------------------- |
S
songruirui 已提交
284
| Promise<string> | 返回与uri指定的数据匹配的MIME类型。 |
S
songruirui 已提交
285 286 287

**示例:**

S
songruirui 已提交
288 289 290
```ts
let dataShareHelper;
let uri = ("datashare:///com.samples.datasharetest.DataShare");
S
songruirui 已提交
291
dataShareHelper.getType(uri).then((data) => {
S
songruirui 已提交
292
    console.log("getType end, data : " + data);
S
songruirui 已提交
293
}).catch((err) => {
S
songruirui 已提交
294
    console.log("getType fail, error message : " + err);
S
songruirui 已提交
295 296 297 298 299
});
```

### getFileTypes

S
songruirui 已提交
300
getFileTypes(uri: string, mimeTypeFilter: string, callback: AsyncCallback<Array<string>>): void
S
songruirui 已提交
301 302 303

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

S
songruirui 已提交
304
**系统能力:**  SystemCapability.DistributedDataManager.DataShare.Consumer
S
songruirui 已提交
305

S
songruirui 已提交
306 307 308 309 310 311
**参数:**

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

**示例:**

S
songruirui 已提交
316 317 318
```ts
let dataShareHelper;
let uri = ("datashare:///com.samples.datasharetest.DataShare");
S
songruirui 已提交
319 320
let mimeTypeFilter = "image/*";
dataShareHelper.getFileTypes(uri, mimeTypeFilter, (err,data) => {
S
songruirui 已提交
321 322 323 324 325
    if (err != undefined) {
        console.log("dataShareHelper fail, error message : " + err);
    }else{
        console.log("dataShareHelper end, data : " + data);
    }
S
songruirui 已提交
326 327 328 329 330 331 332
});
```



### getFileTypes

S
songruirui 已提交
333
getFileTypes(uri: string, mimeTypeFilter: string): Promise<Array<string>>
S
songruirui 已提交
334 335 336

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

S
songruirui 已提交
337
**系统能力:**  SystemCapability.DistributedDataManager.DataShare.Consumer
S
songruirui 已提交
338

S
songruirui 已提交
339 340 341 342 343 344 345 346 347 348 349
**参数:**

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

**返回值:**

| 类型                     | 说明                     |
| ------------------------ | ------------------------ |
S
songruirui 已提交
350
| Promise<Array<string>> | 返回匹配的MIME类型数组。 |
S
songruirui 已提交
351 352 353

**示例:**

S
songruirui 已提交
354 355 356
```ts
let dataShareHelper;
let uri = ("datashare:///com.samples.datasharetest.DataShare");
S
songruirui 已提交
357 358
let mimeTypeFilter = "image/*";
dataShareHelper.getFileTypes(uri, mimeTypeFilter).then((data) => {
S
songruirui 已提交
359
	console.log("dataShareHelper end, data : " + data);
S
songruirui 已提交
360
}).catch((err) => {
S
songruirui 已提交
361
	console.log("dataShareHelper fail, error message : " + err);
S
songruirui 已提交
362 363 364 365 366
});
```

### normalizeUri

S
songruirui 已提交
367
normalizeUri(uri: string, callback: AsyncCallback<string>): void
S
songruirui 已提交
368

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

S
songruirui 已提交
371
**系统能力:**  SystemCapability.DistributedDataManager.DataShare.Consumer
S
songruirui 已提交
372 373 374

**参数:**

S
songruirui 已提交
375 376 377
| 名称     | 类型                   | 必填 | 描述                                                     |
| -------- | ---------------------- | ---- | -------------------------------------------------------- |
| uri      | string                 | 是   | 指示要规范化的uri对象。                                  |
S
songruirui 已提交
378
| callback | AsyncCallback<string> | 是   | 回调方法。如果支持uri规范化或null,则返回规范化uri对象。 |
S
songruirui 已提交
379 380 381

**示例:**

S
songruirui 已提交
382 383 384 385 386 387 388 389 390
```ts
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 已提交
391 392 393 394 395
});
```

### normalizeUri

S
songruirui 已提交
396
normalizeUri(uri: string): Promise<string>
S
songruirui 已提交
397

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

S
songruirui 已提交
400
**系统能力:**  SystemCapability.DistributedDataManager.DataShare.Consumer
S
songruirui 已提交
401 402 403 404 405 406 407 408 409

**参数:**

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

**返回值:**

S
songruirui 已提交
410 411
| 类型             | 说明                                           |
| ---------------- | ---------------------------------------------- |
S
songruirui 已提交
412
| Promise<string> | 如果支持uri规范化或null,则返回规范化uri对象。 |
S
songruirui 已提交
413 414 415

**示例:**

S
songruirui 已提交
416 417 418
```ts
let dataShareHelper;
let uri = ("datashare:///com.samples.datasharetest.DataShare");
S
songruirui 已提交
419
dataShareHelper.normalizeUri(uri).then((data) => {
S
songruirui 已提交
420
    console.log("normalizeUri = " + data);
S
songruirui 已提交
421
}).catch((err) => {
S
songruirui 已提交
422
    console.log("normalizeUri fail, error message : " + err);
S
songruirui 已提交
423 424 425 426 427
});
```

### denormalizeUri

S
songruirui 已提交
428
denormalizeUri(uri: string, callback: AsyncCallback<string>): void
S
songruirui 已提交
429

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

S
songruirui 已提交
432
**系统能力:**  SystemCapability.DistributedDataManager.DataShare.Consumer
S
songruirui 已提交
433 434 435 436 437 438

**参数:**

| 名称     | 类型                   | 必填 | 描述                                                |
| -------- | ---------------------- | ---- | --------------------------------------------------- |
| uri      | string                 | 是   | 指示要规范化的uri对象。                             |
S
songruirui 已提交
439
| callback | AsyncCallback<string> | 是   | 回调方法。如果反规范化成功,则返回反规范化uri对象。 |
S
songruirui 已提交
440 441 442

**示例:**

S
songruirui 已提交
443 444 445 446 447 448 449 450 451
```ts
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 已提交
452 453 454 455 456
});
```

### denormalizeUri

S
songruirui 已提交
457
denormalizeUri(uri: string): Promise<string>
S
songruirui 已提交
458

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

S
songruirui 已提交
461
**系统能力:**  SystemCapability.DistributedDataManager.DataShare.Consumer
S
songruirui 已提交
462 463 464 465 466 467 468 469 470 471 472

**参数:**

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

**返回值:**

| 类型             | 说明                                      |
| ---------------- | ----------------------------------------- |
S
songruirui 已提交
473
| Promise<string> | 如果反规范化成功,则返回反规范化uri对象。 |
S
songruirui 已提交
474 475 476

**示例:**

S
songruirui 已提交
477 478 479
```ts
let dataShareHelper;
let uri = ("datashare:///com.samples.datasharetest.DataShare");
S
songruirui 已提交
480
dataShareHelper.denormalizeUri(uri).then((data) => {
S
songruirui 已提交
481
    console.log("denormalizeUri = " + data);
S
songruirui 已提交
482
}).catch((err) => {
S
songruirui 已提交
483
    console.log("denormalizeUri fail, error message : " + err);
S
songruirui 已提交
484 485 486 487 488
});
```

### insert

S
songruirui 已提交
489
insert(uri: string, value: ValuesBucket, callback: AsyncCallback<number>): void
S
songruirui 已提交
490

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

S
songruirui 已提交
493
**系统能力:**  SystemCapability.DistributedDataManager.DataShare.Consumer
S
songruirui 已提交
494 495 496

**参数:**

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

**示例:**

S
songruirui 已提交
505 506 507
```ts
let dataShareHelper;
let uri = ("datashare:///com.samples.datasharetest.DataShare");
S
songruirui 已提交
508 509 510 511 512 513
const valueBucket = {
    "name": "rose",
    "age": 22,
    "salary": 200.5,
    "blobType": u8,
}
S
songruirui 已提交
514 515 516 517 518 519
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 已提交
520 521 522 523 524
});
```

### insert

S
songruirui 已提交
525
insert(uri: string, value: ValuesBucket): Promise<number>
S
songruirui 已提交
526

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

S
songruirui 已提交
529
**系统能力:**  SystemCapability.DistributedDataManager.DataShare.Consumer
S
songruirui 已提交
530 531 532

**参数:**

S
songruirui 已提交
533 534 535 536
| 名称  | 类型                                                      | 必填 | 描述                                                   |
| ----- | --------------------------------------------------------- | ---- | ------------------------------------------------------ |
| uri   | string                                                    | 是   | 指示要插入的数据的路径。                               |
| value | [ValuesBucket](js-apis-data-ValuesBucket.md#valuesbucket) | 是   | 指示要插入的数据记录。如果此参数为空,将插入一个空行。 |
S
songruirui 已提交
537 538 539

**返回值:**

S
songruirui 已提交
540 541
| 类型             | 说明                                                         |
| ---------------- | ------------------------------------------------------------ |
S
songruirui 已提交
542
| Promise<number> | 返回插入数据记录的索引。(能否返回索引取决于服务端所使用的数据库) |
S
songruirui 已提交
543 544 545

**示例:**

S
songruirui 已提交
546 547 548
```ts
let dataShareHelper;
let uri = ("datashare:///com.samples.datasharetest.DataShare");
S
songruirui 已提交
549 550 551 552 553 554
const valueBucket = {
    "name": "rose1",
    "age": 221,
    "salary": 20.5,
    "blobType": u8,
}
S
songruirui 已提交
555 556
dataShareHelper.insert(uri, valueBucket).then((data) => {
    console.log("insert end, data : " + data);
S
songruirui 已提交
557
}).catch((err) => {
S
songruirui 已提交
558
    console.log("insert fail, error message : " + err);
S
songruirui 已提交
559 560 561 562 563
});
```

### batchInsert

S
songruirui 已提交
564
batchInsert(uri: string, values: Array<ValuesBucket>, callback: AsyncCallback<number>): void
S
songruirui 已提交
565

S
songruirui 已提交
566 567
将批量数据插入数据库(callback形式)。

S
songruirui 已提交
568
**系统能力:**  SystemCapability.DistributedDataManager.DataShare.Consumer
S
songruirui 已提交
569 570 571

**参数:**

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

**示例:**

S
songruirui 已提交
580 581 582 583
```ts
let dataShareHelper;
let uri = ("datashare:///com.samples.datasharetest.DataShare");
let vbs = new Array({"name": "roe11", "age": 21, "salary": 20.5, "blobType": u8,},
S
songruirui 已提交
584 585
                     {"name": "roe12", "age": 21, "salary": 20.5, "blobType": u8,},
                     {"name": "roe13", "age": 21, "salary": 20.5, "blobType": u8,})
S
songruirui 已提交
586 587 588 589 590 591
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 已提交
592 593 594 595 596
});
```

### batchInsert

S
songruirui 已提交
597
batchInsert(uri: string, values: Array<ValuesBucket>): Promise<number>
S
songruirui 已提交
598

S
songruirui 已提交
599 600
将批量数据插入数据库(Promise形式)。

S
songruirui 已提交
601
**系统能力:**  SystemCapability.DistributedDataManager.DataShare.Consumer
S
songruirui 已提交
602 603 604

**参数:**

S
songruirui 已提交
605 606 607
| 名称   | 类型                                                         | 必填 | 描述                     |
| ------ | ------------------------------------------------------------ | ---- | ------------------------ |
| uri    | string                                                       | 是   | 指示要插入的数据的路径。 |
S
songruirui 已提交
608
| values | Array<[ValuesBucket](js-apis-data-ValuesBucket.md#valuesbucket)> | 是   | 指示要插入的数据记录。   |
S
songruirui 已提交
609 610 611

**返回值:**

S
songruirui 已提交
612 613
| 类型             | 说明                                                         |
| ---------------- | ------------------------------------------------------------ |
S
songruirui 已提交
614
| Promise<number> | 返回插入的数据记录数。(能否返回记录数取决于服务端所使用的数据库) |
S
songruirui 已提交
615 616 617

**示例:**

S
songruirui 已提交
618 619 620 621
```ts
let dataShareHelper;
let uri = ("datashare:///com.samples.datasharetest.DataShare");
let vbs = new Array({"name": "roe11", "age": 21, "salary": 20.5, "blobType": u8,},
S
songruirui 已提交
622 623
                     {"name": "roe12", "age": 21, "salary": 20.5, "blobType": u8,},
                     {"name": "roe13", "age": 21, "salary": 20.5, "blobType": u8,})
S
songruirui 已提交
624 625
dataShareHelper.batchInsert(uri, vbs).then((data) => {
    console.log("batchInsert end, data : " + data);
S
songruirui 已提交
626
}).catch((err) => {
S
songruirui 已提交
627
    console.log("batchInsert fail, error message : " + err);
S
songruirui 已提交
628 629 630 631 632
});
```

### delete

S
songruirui 已提交
633
delete(uri: string, predicates: DataSharePredicates, callback: AsyncCallback<number>): void
S
songruirui 已提交
634

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

S
songruirui 已提交
637
**系统能力:**  SystemCapability.DistributedDataManager.DataShare.Consumer
S
songruirui 已提交
638 639 640

**参数:**

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

**示例:**

S
songruirui 已提交
649 650 651
```ts
let dataShareHelper;
let uri = ("datashare:///com.samples.datasharetest.DataShare");
S
songruirui 已提交
652 653
let da = new dataShare.DataSharePredicates();
da.equalTo("name", "ZhangSan");
S
songruirui 已提交
654 655 656 657 658 659
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 已提交
660 661 662 663 664
});
```

### delete

S
songruirui 已提交
665
delete(uri: string, predicates: DataSharePredicates): Promise<number>
S
songruirui 已提交
666

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

S
songruirui 已提交
669
**系统能力:**  SystemCapability.DistributedDataManager.DataShare.Consumer
S
songruirui 已提交
670 671 672

**参数:**

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

**返回值:**

S
songruirui 已提交
680 681
| 类型             | 说明                                                         |
| ---------------- | ------------------------------------------------------------ |
S
songruirui 已提交
682
| Promise<number> | 返回已删除的数据记录数。(能否返回已删除的数目取决于服务端所使用的数据库) |
S
songruirui 已提交
683 684 685

**示例:**

S
songruirui 已提交
686 687 688
```ts
let dataShareHelper;
let uri = ("datashare:///com.samples.datasharetest.DataShare");
S
songruirui 已提交
689 690
let da = new dataShare.DataSharePredicates();
da.equalTo("name", "ZhangSan");
S
songruirui 已提交
691 692
dataShareHelper.delete(uri, da).then((data) => {
    console.log("delete end, data : " + data);
S
songruirui 已提交
693
}).catch((err) => {
S
songruirui 已提交
694
    console.log("delete fail, error message : " + err);
S
songruirui 已提交
695 696 697 698 699
});
```

### update

S
songruirui 已提交
700
update(uri: string, predicates: DataSharePredicates, value: ValuesBucket, callback: AsyncCallback<number>): void
S
songruirui 已提交
701 702 703

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

S
songruirui 已提交
704
**系统能力:**  SystemCapability.DistributedDataManager.DataShare.Consumer
S
songruirui 已提交
705

S
songruirui 已提交
706 707
**参数:**

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

**示例:**

S
songruirui 已提交
717 718 719
```ts
let dataShareHelper;
let uri = ("datashare:///com.samples.datasharetest.DataShare");
S
songruirui 已提交
720 721 722 723 724 725 726 727
let da = new dataShare.DataSharePredicates();
da.equalTo("name", "ZhangSan");
const va = {
    "name": "roe1",
    "age": 21,
    "salary": 20.5,
    "blobType": u8,
}
S
songruirui 已提交
728 729 730 731 732 733
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 已提交
734 735 736 737 738
});
```

### update

S
songruirui 已提交
739
update(uri: string, predicates: DataSharePredicates, value: ValuesBucket): Promise<number>
S
songruirui 已提交
740 741 742

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

S
songruirui 已提交
743
**系统能力:**  SystemCapability.DistributedDataManager.DataShare.Consumer
S
songruirui 已提交
744

S
songruirui 已提交
745 746
**参数:**

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

**返回值:**

S
songruirui 已提交
755 756
| 类型             | 说明                                                         |
| ---------------- | ------------------------------------------------------------ |
S
songruirui 已提交
757
| Promise<number> | 返回更新的数据记录数。(能否返回更新的数据记录数取决于服务端所使用的数据库) |
S
songruirui 已提交
758 759 760

**示例:**

S
songruirui 已提交
761 762 763
```ts
let dataShareHelper;
let uri = ("datashare:///com.samples.datasharetest.DataShare");
S
songruirui 已提交
764 765 766 767 768 769 770 771
let da = new dataShare.DataSharePredicates();
da.equalTo("name", "ZhangSan");
const va = {
    "name": "roe1",
    "age": 21,
    "salary": 20.5,
    "blobType": u8,
}
S
songruirui 已提交
772 773
dataShareHelper.update(uri, da, va).then((data) => {
    console.log("update end, data : " + data);
S
songruirui 已提交
774
}).catch((err) => {
S
songruirui 已提交
775
    console.log("update fail, error message : " + err);
S
songruirui 已提交
776 777 778 779 780
});
```

### query

S
songruirui 已提交
781
query(uri: string, predicates: DataSharePredicates, columns: Array<string>, callback: AsyncCallback<DataShareResultSet>): void
S
songruirui 已提交
782 783 784

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

S
songruirui 已提交
785
**系统能力:**  SystemCapability.DistributedDataManager.DataShare.Consumer
S
songruirui 已提交
786

S
songruirui 已提交
787 788
**参数:**

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

**示例:**

S
songruirui 已提交
798 799 800
```ts
let dataShareHelper;
let uri = ("datashare:///com.samples.datasharetest.DataShare");
S
songruirui 已提交
801 802 803
let columns = ["*"]
let da = new dataShare.DataSharePredicates();
da.equalTo("name", "ZhangSan");
S
songruirui 已提交
804 805 806 807 808 809
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 已提交
810 811 812 813 814 815 816
});
```



### query

S
songruirui 已提交
817
query(uri: string, predicates: DataSharePredicates, columns: Array<string>): Promise<DataShareResultSet>
S
songruirui 已提交
818 819 820

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

S
songruirui 已提交
821
**系统能力:**  SystemCapability.DistributedDataManager.DataShare.Consumer
S
songruirui 已提交
822

S
songruirui 已提交
823 824
**参数:**

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

**返回值:**

S
songruirui 已提交
833 834
| 类型                                                         | 说明           |
| ------------------------------------------------------------ | -------------- |
S
songruirui 已提交
835
| Promise<[DataShareResultSet](js-apis-data-DataShareResultSet.md#datashareresultset)> | 返回查询结果。 |
S
songruirui 已提交
836 837 838

**示例:**

S
songruirui 已提交
839 840 841
```ts
let dataShareHelper;
let uri = ("datashare:///com.samples.datasharetest.DataShare");
S
songruirui 已提交
842 843 844
let columns = ["*"]
let da = new dataShare.DataSharePredicates();
da.equalTo("name", "ZhangSan");
S
songruirui 已提交
845 846
dataShareHelper.query(uri, da, columns).then((data) => {
    console.log("query end, data : " + data);
S
songruirui 已提交
847
}).catch((err) => {
S
songruirui 已提交
848
    console.log("query fail, error message : " + err);
S
songruirui 已提交
849 850
});
```