js-apis-data-dataShare.md 35.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 59
打开URI所指定的远程路径中的文件(callback形式)。

**系统能力:**  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 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
        let fd = data;
    }
});
```

### openFile

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

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

**参数:**

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

**返回值:**

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

**示例:**

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
})
```

### on('dataChange')

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

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

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

**参数:**

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

**示例:**

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
dataShareHelper.on("dataChange", uri, onCallback);

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

### off('dataChange')

S
songruirui 已提交
151
off(type: 'dataChange', uri: string, callback?: AsyncCallback<void>): void
S
songruirui 已提交
152 153 154

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

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

S
songruirui 已提交
157 158 159 160 161 162
**参数:**

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

**示例:**

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
### notifyChange

S
songruirui 已提交
180
notifyChange(uri: string, callback: AsyncCallback<void>): void
S
songruirui 已提交
181 182 183 184 185 186 187 188 189 190

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

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

**参数:**

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

**示例:**

```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

S
songruirui 已提交
206
notifyChange(uri: string): Promise<void>
S
songruirui 已提交
207 208 209 210 211 212 213 214 215 216 217 218 219 220 221

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

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

**参数:**

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

**返回值:**

| 类型           | 说明                  |
| -------------- | --------------------- |
S
songruirui 已提交
222
| Promise<void> | 返回值为Promise对象。 |
S
songruirui 已提交
223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241

**示例:**

```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
### getType

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

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

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

**参数:**

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

**示例:**

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
});
```

### getType

S
songruirui 已提交
275
getType(uri: string): Promise<string>
S
songruirui 已提交
276

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

**参数:**

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

**返回值:**

| 类型             | 说明                                |
| ---------------- | ----------------------------------- |
S
songruirui 已提交
291
| Promise<string> | 返回与uri指定的数据匹配的MIME类型。 |
S
songruirui 已提交
292 293 294

**示例:**

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
});
```

### getFileTypes

S
songruirui 已提交
308
getFileTypes(uri: string, mimeTypeFilter: string, callback: AsyncCallback<Array<string>>): void
S
songruirui 已提交
309 310 311

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

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

S
songruirui 已提交
314 315 316 317 318 319
**参数:**

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

**示例:**

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
});
```



### getFileTypes

S
songruirui 已提交
342
getFileTypes(uri: string, mimeTypeFilter: string): Promise<Array<string>>
S
songruirui 已提交
343 344 345

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

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

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

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

**返回值:**

| 类型                     | 说明                     |
| ------------------------ | ------------------------ |
S
songruirui 已提交
359
| Promise<Array<string>> | 返回匹配的MIME类型数组。 |
S
songruirui 已提交
360 361 362

**示例:**

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
});
```

### normalizeUri

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

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

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

**参数:**

S
songruirui 已提交
385 386 387
| 名称     | 类型                   | 必填 | 描述                                                     |
| -------- | ---------------------- | ---- | -------------------------------------------------------- |
| uri      | string                 | 是   | 指示要规范化的uri对象。                                  |
S
songruirui 已提交
388
| 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
});
```

### normalizeUri

S
songruirui 已提交
407
normalizeUri(uri: string): Promise<string>
S
songruirui 已提交
408

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
| 类型             | 说明                                           |
| ---------------- | ---------------------------------------------- |
S
songruirui 已提交
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
});
```

### denormalizeUri

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

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

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

**参数:**

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

**示例:**

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
});
```

### denormalizeUri

S
songruirui 已提交
470
denormalizeUri(uri: string): Promise<string>
S
songruirui 已提交
471

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

**参数:**

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

**返回值:**

| 类型             | 说明                                      |
| ---------------- | ----------------------------------------- |
S
songruirui 已提交
486
| Promise<string> | 如果反规范化成功,则返回反规范化uri对象。 |
S
songruirui 已提交
487 488 489

**示例:**

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
});
```

### insert

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

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

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

**参数:**

S
songruirui 已提交
511 512 513 514
| 名称     | 类型                                                      | 必填 | 描述                                                         |
| -------- | --------------------------------------------------------- | ---- | ------------------------------------------------------------ |
| uri      | string                                                    | 是   | 指示要插入的数据的路径。                                     |
| value    | [ValuesBucket](js-apis-data-ValuesBucket.md#valuesbucket) | 是   | 指示要插入的数据记录。如果此参数为空,将插入一个空行。       |
S
songruirui 已提交
515
| 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
});
```

### insert

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

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
| 类型             | 说明                                                         |
| ---------------- | ------------------------------------------------------------ |
S
songruirui 已提交
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
});
```

### batchInsert

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

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

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

**参数:**

S
songruirui 已提交
588 589 590
| 名称     | 类型                                                         | 必填 | 描述                                                         |
| -------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ |
| uri      | string                                                       | 是   | 指示要插入的数据的路径。                                     |
S
songruirui 已提交
591 592
| 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
});
```

### batchInsert

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

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

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

**参数:**

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

**返回值:**

S
songruirui 已提交
629 630
| 类型             | 说明                                                         |
| ---------------- | ------------------------------------------------------------ |
S
songruirui 已提交
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
});
```

### delete

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

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

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

**参数:**

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

### delete

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

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
| 类型             | 说明                                                         |
| ---------------- | ------------------------------------------------------------ |
S
songruirui 已提交
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
});
```

### update

S
songruirui 已提交
720
update(uri: string, predicates: DataSharePredicates, value: ValuesBucket, callback: AsyncCallback<number>): void
S
songruirui 已提交
721 722 723

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

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

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

S
songruirui 已提交
728 729 730 731 732
| 名称       | 类型                                                         | 必填 | 描述                                                         |
| ---------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ |
| uri        | string                                                       | 是   | 指示要更新的数据的路径。                                     |
| predicates | [DataSharePredicates](js-apis-data-DataSharePredicates.md#datasharepredicates) | 是   | 指示筛选条件。当此参数为null时,应定义处理逻辑。(是否支持谓词取决于服务端所选用的数据库,如KVDB并不支持谓词,仅RDB支持) |
| value      | [ValuesBucket](js-apis-data-ValuesBucket.md#valuesbucket)    | 是   | 指示要更新的数据。                                           |
S
songruirui 已提交
733
| 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
});
```

### update

S
songruirui 已提交
760
update(uri: string, predicates: DataSharePredicates, value: ValuesBucket): Promise<number>
S
songruirui 已提交
761 762 763

更新数据库中的数据记录(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
| 类型             | 说明                                                         |
| ---------------- | ------------------------------------------------------------ |
S
songruirui 已提交
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
});
```

### query

S
songruirui 已提交
803
query(uri: string, predicates: DataSharePredicates, columns: Array<string>, callback: AsyncCallback<DataShareResultSet>): void
S
songruirui 已提交
804 805 806

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

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

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

S
songruirui 已提交
811 812 813 814
| 名称       | 类型                                                         | 必填 | 描述                                                         |
| ---------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ |
| uri        | string                                                       | 是   | 指示要查询的数据的路径。                                     |
| predicates | [DataSharePredicates](js-apis-data-DataSharePredicates.md#datasharepredicates) | 是   | 指示筛选条件。当此参数为null时,应定义处理逻辑。(具体所支持的谓词方法取决于服务端所选用的数据库,如KVDB目前仅支持inKeys和prefixKey) |
S
songruirui 已提交
815 816
| 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
});
```



### query

S
songruirui 已提交
840
query(uri: string, predicates: DataSharePredicates, columns: Array<string>): Promise<DataShareResultSet>
S
songruirui 已提交
841 842 843

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

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

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

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

**返回值:**

S
songruirui 已提交
856 857
| 类型                                                         | 说明           |
| ------------------------------------------------------------ | -------------- |
S
songruirui 已提交
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
});
```