js-apis-data-rdb.md 49.7 KB
Newer Older
Z
zengyawen 已提交
1
# 关系型数据库
Z
zengyawen 已提交
2

3 4 5 6 7 8 9
关系型数据库(Relational Database,RDB)是一种基于关系模型来管理数据的数据库。关系型数据库基于SQLite组件提供了一套完整的对本地数据库进行管理的机制,对外提供了一系列的增、删、改、查等接口,也可以直接运行用户输入的SQL语句来满足复杂的场景需要。

该模块提供以下关系型数据库相关的常用功能:

- [RdbPredicates](#rdbpredicates): 数据库中用来代表数据实体的性质、特征或者数据实体之间关系的词项,主要用来定义数据库的操作条件。
- [RdbStore](#rdbstore):提供管理关系数据库(RDB)方法的接口。

G
ge-yafang 已提交
10
> **说明:**
11
> 
Z
zengyawen 已提交
12
> 本模块首批接口从API version 7开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
Z
zengyawen 已提交
13

Z
zengyawen 已提交
14
## 导入模块
Z
zengyawen 已提交
15

G
ge-yafang 已提交
16 17
```js
import data_rdb from '@ohos.data.rdb';
Z
zengyawen 已提交
18 19
```

P
PaDoBoo 已提交
20
## data_rdb.getRdbStore
Z
zengyawen 已提交
21

W
wuyongning 已提交
22 23 24 25
getRdbStore(context: Context, config: StoreConfig, version: number, callback: AsyncCallback<RdbStore>): void

获得一个相关的RdbStore,操作关系型数据库,用户可以根据自己的需求配置RdbStore的参数,然后通过RdbStore调用相关接口可以执行相关的数据操作,结果以callback形式返回。

G
ge-yafang 已提交
26
**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core。
W
wuyongning 已提交
27

28
**参数:**
W
wuyongning 已提交
29 30 31

| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
32
| context | Context | 是 | 应用程序或功能的上下文。 <br>API version 9之前的Context定义见[Context](js-apis-Context.md)<br>API version 9及之后的Context定义见[Context](js-apis-ability-context.md)。|
W
wuyongning 已提交
33 34 35 36
| config | [StoreConfig](#storeconfig) | 是 | 与此RDB存储相关的数据库配置。 |
| version | number | 是 | 数据库版本。 |
| callback | AsyncCallback&lt;[RdbStore](#rdbstore)&gt; | 是 | 指定callback回调函数,返回一个RdbStore。 |

37
**示例:**
W
wuyongning 已提交
38 39 40 41

```js
const STORE_CONFIG = { name: "RdbTest.db"}
data_rdb.getRdbStore(this.context, STORE_CONFIG, 1, function (err, rdbStore) {
42 43 44 45 46
    if (err) {
        console.info("Get RdbStore failed, err: " + err)
        return
    }
    console.log("Get RdbStore successfully.")
W
wuyongning 已提交
47 48 49
})
```

50
## data_rdb.getRdbStore
W
wuyongning 已提交
51 52 53 54 55

getRdbStore(context: Context, config: StoreConfig, version: number): Promise&lt;RdbStore&gt;

获得一个相关的RdbStore,操作关系型数据库,用户可以根据自己的需求配置RdbStore的参数,然后通过RdbStore调用相关接口可以执行相关的数据操作,结果以Promise形式返回。

G
ge-yafang 已提交
56
**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core。
W
wuyongning 已提交
57

58
**参数:**
W
wuyongning 已提交
59 60 61

| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
62
| context | Context | 是 | 应用程序或功能的上下文。 <br>API version 9之前的Context定义见[Context](js-apis-Context.md)<br>API version 9及之后的Context定义见[Context](js-apis-ability-context.md)。 |
W
wuyongning 已提交
63 64 65 66 67 68 69 70 71
| config | [StoreConfig](#storeconfig) | 是 | 与此RDB存储相关的数据库配置。 |
| version | number | 是 | 数据库版本。 |

**返回值**

| 类型 | 说明 |
| -------- | -------- |
| Promise&lt;[RdbStore](#rdbstore)&gt; | 指定Promise回调函数。返回一个RdbStore。 |

72
**示例:**
W
wuyongning 已提交
73 74 75

```js
const STORE_CONFIG = { name: "RdbTest.db" }
76 77 78
let promise = data_rdb.getRdbStore(this.context, STORE_CONFIG, 1);
promise.then(async (rdbStore) => {
    console.log("Get RdbStore successfully.")
W
wuyongning 已提交
79
}).catch((err) => {
80
    console.log("Get RdbStore failed, err: " + err)
W
wuyongning 已提交
81 82 83
})
```

P
PaDoBoo 已提交
84
## data_rdb.deleteRdbStore
Z
zengyawen 已提交
85

W
wuyongning 已提交
86
deleteRdbStore(context: Context, name: string, callback: AsyncCallback&lt;void&gt;): void
W
wuyongning 已提交
87

W
wuyongning 已提交
88
删除数据库,结果以callback形式返回。
W
wuyongning 已提交
89

G
ge-yafang 已提交
90
**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core。
W
wuyongning 已提交
91

92
**参数:**
W
wuyongning 已提交
93 94
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
95
| context | Context | 是 | 应用程序或功能的上下文。 <br>API version 9之前的Context定义见[Context](js-apis-Context.md)<br>API version 9及之后的Context定义见[Context](js-apis-ability-context.md)。|
W
wuyongning 已提交
96
| name | string | 是 | 数据库名称。 |
W
wuyongning 已提交
97
| callback | AsyncCallback&lt;void&gt; | 是 | 指定callback回调函数。 |
W
wuyongning 已提交
98

99 100 101 102 103 104 105 106 107 108
**示例:**
```js
data_rdb.deleteRdbStore(this.context, "RdbTest.db", function (err, rdbStore) {
    if (err) {
        console.info("Delete RdbStore failed, err: " + err)
        return
    }
    console.log("Delete RdbStore successfully.")
})
```
W
wuyongning 已提交
109

110
## data_rdb.deleteRdbStore
W
wuyongning 已提交
111

W
wuyongning 已提交
112
deleteRdbStore(context: Context, name: string): Promise&lt;void&gt;
Z
zengyawen 已提交
113 114 115

使用指定的数据库文件配置删除数据库,结果以Promise形式返回。

G
ge-yafang 已提交
116
**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core。
W
wuyongning 已提交
117

Z
zengyawen 已提交
118
**参数**
Z
zengyawen 已提交
119 120
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
121
| context | Context | 是 | 应用程序或功能的上下文。 <br>API version 9之前的Context定义见[Context](js-apis-Context.md)<br>API version 9及之后的Context定义见[Context](js-apis-ability-context.md)。|
Z
zengyawen 已提交
122
| name | string | 是 | 数据库名称。 |
Z
zengyawen 已提交
123

Z
zengyawen 已提交
124
**返回值**
Z
zengyawen 已提交
125 126
| 类型 | 说明 |
| -------- | -------- |
W
wuyongning 已提交
127
| Promise&lt;void&gt; | 指定Promise回调函数。 |
Z
zengyawen 已提交
128

129 130
**示例:**
```js
131
let promise = data_rdb.deleteRdbStore(this.context, "RdbTest.db")
132 133 134 135 136 137
promise.then(()=>{
    console.log("Delete RdbStore successfully.")
}).catch((err) => {
    console.info("Delete RdbStore failed, err: " + err)
})
```
Z
zengyawen 已提交
138

W
wuyongning 已提交
139

Z
zengyawen 已提交
140
## RdbPredicates
Z
zengyawen 已提交
141 142 143 144

表示关系型数据库(RDB)的谓词。该类确定RDB中条件表达式的值是true还是false。


Z
zengyawen 已提交
145 146 147 148
### constructor

constructor(name: string)

Z
zengyawen 已提交
149 150 151

构造函数。

G
ge-yafang 已提交
152
**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core。
Z
zengyawen 已提交
153

154
**参数:**
Z
zengyawen 已提交
155 156 157
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| name | string | 是 | 数据库表名。 |
Z
zengyawen 已提交
158

159 160 161 162
**示例:**
```js
let predicates = new data_rdb.RdbPredicates("EMPLOYEE")
```
Z
zengyawen 已提交
163

Z
zengyawen 已提交
164
### inDevices<sup>8+</sup>
S
sun-dou 已提交
165

W
wuyongning 已提交
166
inDevices(devices: Array&lt;string&gt;): RdbPredicates
S
sun-dou 已提交
167 168 169 170


同步分布式数据库时指定组网内的远程设备。

G
ge-yafang 已提交
171
**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core。
S
sun-dou 已提交
172

173
**参数:**
Z
zengyawen 已提交
174 175 176
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| devices | Array&lt;string&gt; | 是 | 指定的组网内的远程设备ID。 |
S
sun-dou 已提交
177

Z
zengyawen 已提交
178
**返回值**
Z
zengyawen 已提交
179 180 181
| 类型 | 说明 |
| -------- | -------- |
| [RdbPredicates](#rdbpredicates) | 返回与指定字段匹配的谓词。 |
S
sun-dou 已提交
182

183 184 185 186 187
**示例:**
```js
let predicates = new data_rdb.RdbPredicates("EMPLOYEE")
predicates.inDevices(['12345678abcde'])
```
S
sun-dou 已提交
188

W
wuyongning 已提交
189
### inAllDevices<sup>8+</sup>
S
sun-dou 已提交
190

W
wuyongning 已提交
191
inAllDevices(): RdbPredicates
S
sun-dou 已提交
192 193 194 195


同步分布式数据库时连接到组网内的所有远程设备。

G
ge-yafang 已提交
196
**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core。
S
sun-dou 已提交
197

Z
zengyawen 已提交
198
**返回值**
Z
zengyawen 已提交
199 200 201
| 类型 | 说明 |
| -------- | -------- |
| [RdbPredicates](#rdbpredicates) | 返回与指定字段匹配的谓词。 |
S
sun-dou 已提交
202

203 204 205 206 207
**示例:**
```js
let predicates = new data_rdb.RdbPredicates("EMPLOYEE")
predicates.inAllDevices()
```
Z
zengyawen 已提交
208 209 210 211 212

### equalTo

equalTo(field: string, value: ValueType): RdbPredicates

Z
zengyawen 已提交
213 214 215

配置谓词以匹配数据字段为ValueType且值等于指定值的字段。

G
ge-yafang 已提交
216
**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core。
Z
zengyawen 已提交
217

218
**参数:**
Z
zengyawen 已提交
219 220 221 222
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| field | string | 是 | 数据库表中的列名。 |
| value | [ValueType](#valuetype) | 是 | 指示要与谓词匹配的值。 |
Z
zengyawen 已提交
223

Z
zengyawen 已提交
224
**返回值**
Z
zengyawen 已提交
225 226 227
| 类型 | 说明 |
| -------- | -------- |
| [RdbPredicates](#rdbpredicates) | 返回与指定字段匹配的谓词。 |
Z
zengyawen 已提交
228

229 230 231 232 233
**示例:**
```js
let predicates = new data_rdb.RdbPredicates("EMPLOYEE")
predicates.equalTo("NAME", "lisi")
```
Z
zengyawen 已提交
234 235 236 237 238 239


### notEqualTo

notEqualTo(field: string, value: ValueType): RdbPredicates

Z
zengyawen 已提交
240 241 242

配置谓词以匹配数据字段为ValueType且值不等于指定值的字段。

G
ge-yafang 已提交
243
**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core。
Z
zengyawen 已提交
244

245
**参数:**
Z
zengyawen 已提交
246 247 248 249
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| field | string | 是 | 数据库表中的列名。 |
| value | [ValueType](#valuetype) | 是 | 指示要与谓词匹配的值。 |
Z
zengyawen 已提交
250

Z
zengyawen 已提交
251
**返回值**
Z
zengyawen 已提交
252 253 254
| 类型 | 说明 |
| -------- | -------- |
| [RdbPredicates](#rdbpredicates) | 返回与指定字段匹配的谓词。 |
Z
zengyawen 已提交
255

256 257 258 259 260
**示例:**
```js
let predicates = new data_rdb.RdbPredicates("EMPLOYEE")
predicates.notEqualTo("NAME", "lisi")
```
Z
zengyawen 已提交
261 262 263 264 265 266


### beginWrap

beginWrap(): RdbPredicates

Z
zengyawen 已提交
267 268 269

向谓词添加左括号。

G
ge-yafang 已提交
270
**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core。
Z
zengyawen 已提交
271

Z
zengyawen 已提交
272
**返回值**
Z
zengyawen 已提交
273 274 275
| 类型 | 说明 |
| -------- | -------- |
| [RdbPredicates](#rdbpredicates) | 返回带有左括号的Rdb谓词。 |
Z
zengyawen 已提交
276

277 278 279 280 281 282 283 284 285 286
**示例:**
```js
let predicates = new data_rdb.RdbPredicates("EMPLOYEE")
predicates.equalTo("NAME", "lisi")
    .beginWrap()
    .equalTo("AGE", 18)
    .or()
    .equalTo("SALARY", 200.5)
    .endWrap()
```
Z
zengyawen 已提交
287 288


Z
zengyawen 已提交
289
### endWrap
Z
zengyawen 已提交
290

Z
zengyawen 已提交
291
endWrap(): RdbPredicates
Z
zengyawen 已提交
292 293 294 295


向谓词添加右括号。

G
ge-yafang 已提交
296
**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core。
Z
zengyawen 已提交
297

Z
zengyawen 已提交
298
**返回值**
Z
zengyawen 已提交
299 300 301
| 类型 | 说明 |
| -------- | -------- |
| [RdbPredicates](#rdbpredicates) | 返回带有右括号的Rdb谓词。 |
Z
zengyawen 已提交
302

303 304 305 306 307 308 309 310 311 312
**示例:**
```js
let predicates = new data_rdb.RdbPredicates("EMPLOYEE")
predicates.equalTo("NAME", "lisi")
    .beginWrap()
    .equalTo("AGE", 18)
    .or()
    .equalTo("SALARY", 200.5)
    .endWrap()
```
Z
zengyawen 已提交
313 314


Z
zengyawen 已提交
315
### or
Z
zengyawen 已提交
316

Z
zengyawen 已提交
317
or(): RdbPredicates
Z
zengyawen 已提交
318 319 320 321


将或条件添加到谓词中。

G
ge-yafang 已提交
322
**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core。
Z
zengyawen 已提交
323

Z
zengyawen 已提交
324
**返回值**
Z
zengyawen 已提交
325 326 327
| 类型 | 说明 |
| -------- | -------- |
| [RdbPredicates](#rdbpredicates) | 返回带有或条件的Rdb谓词。 |
Z
zengyawen 已提交
328

329 330 331 332 333 334 335
**示例:**
```js
let predicates = new data_rdb.RdbPredicates("EMPLOYEE")
predicates.equalTo("NAME", "Lisa")
    .or()
    .equalTo("NAME", "Rose")
```
Z
zengyawen 已提交
336 337


Z
zengyawen 已提交
338
### and
Z
zengyawen 已提交
339

Z
zengyawen 已提交
340
and(): RdbPredicates
Z
zengyawen 已提交
341 342 343 344


向谓词添加和条件。

G
ge-yafang 已提交
345
**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core。
Z
zengyawen 已提交
346

Z
zengyawen 已提交
347
**返回值**
Z
zengyawen 已提交
348 349 350
| 类型 | 说明 |
| -------- | -------- |
| [RdbPredicates](#rdbpredicates) | 返回带有和条件的Rdb谓词。 |
Z
zengyawen 已提交
351

352 353 354 355 356 357 358
**示例:**
```js
let predicates = new data_rdb.RdbPredicates("EMPLOYEE")
predicates.equalTo("NAME", "Lisa")
    .and()
    .equalTo("SALARY", 200.5)
```
Z
zengyawen 已提交
359 360


Z
zengyawen 已提交
361
### contains
Z
zengyawen 已提交
362

W
wuyongning 已提交
363
contains(field: string, value: string): RdbPredicates
Z
zengyawen 已提交
364

G
ge-yafang 已提交
365
配置谓词以匹配数据字段为string且value包含指定值的字段。
Z
zengyawen 已提交
366

G
ge-yafang 已提交
367
**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core。
Z
zengyawen 已提交
368

369
**参数:**
Z
zengyawen 已提交
370 371 372 373
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| field | string | 是 | 数据库表中的列名。 |
| value | string | 是 | 指示要与谓词匹配的值。 |
Z
zengyawen 已提交
374

Z
zengyawen 已提交
375
**返回值**
Z
zengyawen 已提交
376 377 378
| 类型 | 说明 |
| -------- | -------- |
| [RdbPredicates](#rdbpredicates) | 返回与指定字段匹配的谓词。 |
Z
zengyawen 已提交
379

380 381 382 383 384
**示例:**
```js
let predicates = new data_rdb.RdbPredicates("EMPLOYEE")
predicates.contains("NAME", "os")
```
Z
zengyawen 已提交
385 386 387 388 389 390


### beginsWith

beginsWith(field: string, value: string): RdbPredicates

Z
zengyawen 已提交
391

G
ge-yafang 已提交
392
配置谓词以匹配数据字段为string且值以指定字符串开头的字段。
Z
zengyawen 已提交
393

G
ge-yafang 已提交
394
**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core。
Z
zengyawen 已提交
395

396
**参数:**
Z
zengyawen 已提交
397 398 399 400
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| field | string | 是 | 数据库表中的列名。 |
| value | string | 是 | 指示要与谓词匹配的值。 |
Z
zengyawen 已提交
401

Z
zengyawen 已提交
402
**返回值**
Z
zengyawen 已提交
403 404 405
| 类型 | 说明 |
| -------- | -------- |
| [RdbPredicates](#rdbpredicates) | 返回与指定字段匹配的谓词。 |
Z
zengyawen 已提交
406

407 408 409 410 411
**示例:**
```js
let predicates = new data_rdb.RdbPredicates("EMPLOYEE")
predicates.beginsWith("NAME", "os")
```
Z
zengyawen 已提交
412 413 414 415 416 417


### endsWith

endsWith(field: string, value: string): RdbPredicates

Z
zengyawen 已提交
418

G
ge-yafang 已提交
419
配置谓词以匹配数据字段为string且值以指定字符串结尾的字段。
Z
zengyawen 已提交
420

G
ge-yafang 已提交
421
**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core。
Z
zengyawen 已提交
422

423
**参数:**
Z
zengyawen 已提交
424 425 426 427
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| field | string | 是 | 数据库表中的列名。 |
| value | string | 是 | 指示要与谓词匹配的值。 |
Z
zengyawen 已提交
428

Z
zengyawen 已提交
429
**返回值**
Z
zengyawen 已提交
430 431 432
| 类型 | 说明 |
| -------- | -------- |
| [RdbPredicates](#rdbpredicates) | 返回与指定字段匹配的谓词。 |
Z
zengyawen 已提交
433

434 435 436 437 438
**示例:**
```js
let predicates = new data_rdb.RdbPredicates("EMPLOYEE")
predicates.endsWith("NAME", "se")
```
Z
zengyawen 已提交
439 440 441 442 443 444


### isNull

isNull(field: string): RdbPredicates

Z
zengyawen 已提交
445 446 447

配置谓词以匹配值为null的字段。

G
ge-yafang 已提交
448
**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core。
Z
zengyawen 已提交
449

450
**参数:**
Z
zengyawen 已提交
451 452 453
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| field | string | 是 | 数据库表中的列名。 |
Z
zengyawen 已提交
454

Z
zengyawen 已提交
455
**返回值**
Z
zengyawen 已提交
456 457 458
| 类型 | 说明 |
| -------- | -------- |
| [RdbPredicates](#rdbpredicates) | 返回与指定字段匹配的谓词。 |
Z
zengyawen 已提交
459 460

- 示例
461 462 463 464
```js
let predicates = new data_rdb.RdbPredicates("EMPLOYEE")
predicates.isNull("NAME")
```
Z
zengyawen 已提交
465 466 467 468 469 470


### isNotNull

isNotNull(field: string): RdbPredicates

Z
zengyawen 已提交
471 472 473

配置谓词以匹配值不为null的指定字段。

G
ge-yafang 已提交
474
**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core。
Z
zengyawen 已提交
475

476
**参数:**
Z
zengyawen 已提交
477 478 479
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| field | string | 是 | 数据库表中的列名。 |
Z
zengyawen 已提交
480

Z
zengyawen 已提交
481
**返回值**
Z
zengyawen 已提交
482 483 484
| 类型 | 说明 |
| -------- | -------- |
| [RdbPredicates](#rdbpredicates) | 返回与指定字段匹配的谓词。 |
Z
zengyawen 已提交
485

486 487 488 489 490
**示例:**
```js
let predicates = new data_rdb.RdbPredicates("EMPLOYEE")
predicates.isNotNull("NAME")
```
Z
zengyawen 已提交
491 492 493 494 495 496


### like

like(field: string, value: string): RdbPredicates

Z
zengyawen 已提交
497

G
ge-yafang 已提交
498
配置谓词以匹配数据字段为string且值类似于指定字符串的字段。
Z
zengyawen 已提交
499

G
ge-yafang 已提交
500
**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core。
Z
zengyawen 已提交
501

502
**参数:**
Z
zengyawen 已提交
503 504 505 506
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| field | string | 是 | 数据库表中的列名。 |
| value | string | 是 | 指示要与谓词匹配的值。 |
Z
zengyawen 已提交
507

Z
zengyawen 已提交
508
**返回值**
Z
zengyawen 已提交
509 510 511
| 类型 | 说明 |
| -------- | -------- |
| [RdbPredicates](#rdbpredicates) | 返回与指定字段匹配的谓词。 |
Z
zengyawen 已提交
512

513 514 515 516 517
**示例:**
```js
let predicates = new data_rdb.RdbPredicates("EMPLOYEE")
predicates.like("NAME", "%os%")
```
Z
zengyawen 已提交
518 519 520 521 522 523


### glob

glob(field: string, value: string): RdbPredicates

Z
zengyawen 已提交
524

G
ge-yafang 已提交
525
配置RdbPredicates匹配数据字段为string的指定字段。
Z
zengyawen 已提交
526

G
ge-yafang 已提交
527
**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core。
Z
zengyawen 已提交
528

529
**参数:**
Z
zengyawen 已提交
530 531 532 533
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| field | string | 是 | 数据库表中的列名。 |
| value | string | 是 | 指示要与谓词匹配的值。<br>支持通配符,*表示0个、1个或多个数字或字符,?表示1个数字或字符。 |
Z
zengyawen 已提交
534

Z
zengyawen 已提交
535
**返回值**
Z
zengyawen 已提交
536 537 538
| 类型 | 说明 |
| -------- | -------- |
| [RdbPredicates](#rdbpredicates) | 返回与指定字段匹配的谓词。 |
Z
zengyawen 已提交
539

540 541 542 543 544
**示例:**
```js
let predicates = new data_rdb.RdbPredicates("EMPLOYEE")
predicates.glob("NAME", "?h*g")
```
Z
zengyawen 已提交
545 546 547 548 549 550


### between

between(field: string, low: ValueType, high: ValueType): RdbPredicates

Z
zengyawen 已提交
551 552 553

将谓词配置为匹配数据字段为ValueType且value在给定范围内的指定字段。

G
ge-yafang 已提交
554
**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core。
Z
zengyawen 已提交
555

556
**参数:**
Z
zengyawen 已提交
557 558 559 560 561
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| field | string | 是 | 数据库表中的列名。 |
| low | [ValueType](#valuetype) | 是 | 指示与谓词匹配的最小值。 |
| high | [ValueType](#valuetype) | 是 | 指示要与谓词匹配的最大值。 |
Z
zengyawen 已提交
562

Z
zengyawen 已提交
563
**返回值**
Z
zengyawen 已提交
564 565 566
| 类型 | 说明 |
| -------- | -------- |
| [RdbPredicates](#rdbpredicates) | 返回与指定字段匹配的谓词。 |
Z
zengyawen 已提交
567

568 569 570 571 572
**示例:**
```js
let predicates = new data_rdb.RdbPredicates("EMPLOYEE")
predicates.between("AGE", 10, 50)
```
Z
zengyawen 已提交
573 574 575 576 577 578


### notBetween

notBetween(field: string, low: ValueType, high: ValueType): RdbPredicates

Z
zengyawen 已提交
579 580 581

配置RdbPredicates以匹配数据字段为ValueType且value超出给定范围的指定字段。

G
ge-yafang 已提交
582
**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core。
Z
zengyawen 已提交
583

584
**参数:**
Z
zengyawen 已提交
585 586 587 588 589
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| field | string | 是 | 数据库表中的列名。 |
| low | [ValueType](#valuetype) | 是 | 指示与谓词匹配的最小值。 |
| high | [ValueType](#valuetype) | 是 | 指示要与谓词匹配的最大值。 |
Z
zengyawen 已提交
590

Z
zengyawen 已提交
591
**返回值**
Z
zengyawen 已提交
592 593 594
| 类型 | 说明 |
| -------- | -------- |
| [RdbPredicates](#rdbpredicates) | 返回与指定字段匹配的谓词。 |
Z
zengyawen 已提交
595

596 597 598 599 600
**示例:**
```js
let predicates = new data_rdb.RdbPredicates("EMPLOYEE")
predicates.notBetween("AGE", 10, 50)
```
Z
zengyawen 已提交
601 602 603 604


### greaterThan

W
wuyongning 已提交
605
greaterThan(field: string, value: ValueType): RdbPredicates
Z
zengyawen 已提交
606 607 608

配置谓词以匹配数据字段为ValueType且值大于指定值的字段。

G
ge-yafang 已提交
609
**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core。
Z
zengyawen 已提交
610

611
**参数:**
Z
zengyawen 已提交
612 613 614 615
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| field | string | 是 | 数据库表中的列名。 |
| value | [ValueType](#valuetype) | 是 | 指示要与谓词匹配的值。 |
Z
zengyawen 已提交
616

Z
zengyawen 已提交
617
**返回值**
Z
zengyawen 已提交
618 619 620
| 类型 | 说明 |
| -------- | -------- |
| [RdbPredicates](#rdbpredicates) | 返回与指定字段匹配的谓词。 |
Z
zengyawen 已提交
621

622 623 624 625 626
**示例:**
```js
let predicates = new data_rdb.RdbPredicates("EMPLOYEE")
predicates.greaterThan("AGE", 18)
```
Z
zengyawen 已提交
627 628 629 630 631 632


### lessThan

lessThan(field: string, value: ValueType): RdbPredicates

Z
zengyawen 已提交
633 634 635

配置谓词以匹配数据字段为valueType且value小于指定值的字段。

G
ge-yafang 已提交
636
**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core。
Z
zengyawen 已提交
637

638
**参数:**
Z
zengyawen 已提交
639 640 641 642
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| field | string | 是 | 数据库表中的列名。 |
| value | [ValueType](#valuetype) | 是 | 指示要与谓词匹配的值。 |
Z
zengyawen 已提交
643

Z
zengyawen 已提交
644
**返回值**
Z
zengyawen 已提交
645 646 647
| 类型 | 说明 |
| -------- | -------- |
| [RdbPredicates](#rdbpredicates) | 返回与指定字段匹配的谓词。 |
Z
zengyawen 已提交
648

649 650 651 652 653
**示例:**
```js
let predicates = new data_rdb.RdbPredicates("EMPLOYEE")
predicates.lessThan("AGE", 20)
```
Z
zengyawen 已提交
654 655 656 657 658 659 660


### greaterThanOrEqualTo


greaterThanOrEqualTo(field: string, value: ValueType): RdbPredicates

Z
zengyawen 已提交
661 662 663

配置谓词以匹配数据字段为ValueType且value大于或等于指定值的字段。

G
ge-yafang 已提交
664
**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core。
Z
zengyawen 已提交
665

666
**参数:**
Z
zengyawen 已提交
667 668 669 670
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| field | string | 是 | 数据库表中的列名。 |
| value | [ValueType](#valuetype) | 是 | 指示要与谓词匹配的值。 |
Z
zengyawen 已提交
671

Z
zengyawen 已提交
672
**返回值**
Z
zengyawen 已提交
673 674 675
| 类型 | 说明 |
| -------- | -------- |
| [RdbPredicates](#rdbpredicates) | 返回与指定字段匹配的谓词。 |
Z
zengyawen 已提交
676

677 678 679 680 681
**示例:**
```js
let predicates = new data_rdb.RdbPredicates("EMPLOYEE")
predicates.greaterThanOrEqualTo("AGE", 18)
```
Z
zengyawen 已提交
682 683 684 685 686 687 688


### lessThanOrEqualTo


lessThanOrEqualTo(field: string, value: ValueType): RdbPredicates

Z
zengyawen 已提交
689 690 691

配置谓词以匹配数据字段为ValueType且value小于或等于指定值的字段。

G
ge-yafang 已提交
692
**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core。
Z
zengyawen 已提交
693

694
**参数:**
Z
zengyawen 已提交
695 696 697 698
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| field | string | 是 | 数据库表中的列名。 |
| value | [ValueType](#valuetype) | 是 | 指示要与谓词匹配的值。 |
Z
zengyawen 已提交
699

Z
zengyawen 已提交
700
**返回值**
Z
zengyawen 已提交
701 702 703
| 类型 | 说明 |
| -------- | -------- |
| [RdbPredicates](#rdbpredicates) | 返回与指定字段匹配的谓词。 |
Z
zengyawen 已提交
704

705 706 707 708 709
**示例:**
```js
let predicates = new data_rdb.RdbPredicates("EMPLOYEE")
predicates.lessThanOrEqualTo("AGE", 20)
```
Z
zengyawen 已提交
710 711 712 713 714 715 716


### orderByAsc


orderByAsc(field: string): RdbPredicates

Z
zengyawen 已提交
717 718 719

配置谓词以匹配其值按升序排序的列。

G
ge-yafang 已提交
720
**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core。
Z
zengyawen 已提交
721

722
**参数:**
Z
zengyawen 已提交
723 724 725
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| field | string | 是 | 数据库表中的列名。 |
Z
zengyawen 已提交
726

Z
zengyawen 已提交
727
**返回值**
Z
zengyawen 已提交
728 729 730
| 类型 | 说明 |
| -------- | -------- |
| [RdbPredicates](#rdbpredicates) | 返回与指定字段匹配的谓词。 |
Z
zengyawen 已提交
731

732 733 734 735 736
**示例:**
```js
let predicates = new data_rdb.RdbPredicates("EMPLOYEE")
predicates.orderByAsc("NAME")
```
Z
zengyawen 已提交
737 738 739 740 741 742 743


### orderByDesc


orderByDesc(field: string): RdbPredicates

Z
zengyawen 已提交
744 745 746

配置谓词以匹配其值按降序排序的列。

G
ge-yafang 已提交
747
**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core。
Z
zengyawen 已提交
748

749
**参数:**
Z
zengyawen 已提交
750 751 752
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| field | string | 是 | 数据库表中的列名。 |
Z
zengyawen 已提交
753

Z
zengyawen 已提交
754
**返回值**
Z
zengyawen 已提交
755 756 757
| 类型 | 说明 |
| -------- | -------- |
| [RdbPredicates](#rdbpredicates) | 返回与指定字段匹配的谓词。 |
Z
zengyawen 已提交
758

759 760 761 762 763
**示例:**
```js
let predicates = new data_rdb.RdbPredicates("EMPLOYEE")
predicates.orderByDesc("AGE")
```
Z
zengyawen 已提交
764 765 766 767 768 769


### distinct

distinct(): RdbPredicates

Z
zengyawen 已提交
770 771 772

配置谓词以过滤重复记录并仅保留其中一个。

G
ge-yafang 已提交
773
**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core。
Z
zengyawen 已提交
774

Z
zengyawen 已提交
775
**返回值**
Z
zengyawen 已提交
776 777 778
| 类型 | 说明 |
| -------- | -------- |
| [RdbPredicates](#rdbpredicates) | 返回可用于过滤重复记录的谓词。 |
Z
zengyawen 已提交
779

780 781 782 783 784 785 786 787 788 789 790 791
**示例:**
```js
let predicates = new data_rdb.RdbPredicates("EMPLOYEE")
predicates.equalTo("NAME", "Rose").distinct("NAME")
let promise = rdbStore.query(predicates, ["NAME"])
promise.then((resultSet) => {
    console.log("resultSet column names:" + resultSet.columnNames)
    console.log("resultSet column count:" + resultSet.columnCount)
}).catch((err) => {
    console.log("query err.")
})
```
Z
zengyawen 已提交
792 793


Z
zengyawen 已提交
794
### limitAs
Z
zengyawen 已提交
795

Z
zengyawen 已提交
796
limitAs(value: number): RdbPredicates
Z
zengyawen 已提交
797 798 799 800


设置最大数据记录数的谓词。

G
ge-yafang 已提交
801
**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core。
Z
zengyawen 已提交
802

803
**参数:**
Z
zengyawen 已提交
804 805 806
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| value | number | 是 | 最大数据记录数。 |
Z
zengyawen 已提交
807

Z
zengyawen 已提交
808
**返回值**
Z
zengyawen 已提交
809 810 811
| 类型 | 说明 |
| -------- | -------- |
| [RdbPredicates](#rdbpredicates) | 返回可用于设置最大数据记录数的谓词。 |
Z
zengyawen 已提交
812

813 814 815 816 817
**示例:**
```js
let predicates = new data_rdb.RdbPredicates("EMPLOYEE")
predicates.equalTo("NAME", "Rose").limitAs(3)
```
Z
zengyawen 已提交
818 819 820 821 822 823


### offsetAs

offsetAs(rowOffset: number): RdbPredicates

Z
zengyawen 已提交
824 825 826

配置RdbPredicates以指定返回结果的起始位置。

G
ge-yafang 已提交
827
**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core。
Z
zengyawen 已提交
828

829
**参数:**
Z
zengyawen 已提交
830 831 832
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| rowOffset | number | 是 | 返回结果的起始位置,取值为正整数。 |
Z
zengyawen 已提交
833

Z
zengyawen 已提交
834
**返回值**
Z
zengyawen 已提交
835 836 837
| 类型 | 说明 |
| -------- | -------- |
| [RdbPredicates](#rdbpredicates) | 返回具有指定返回结果起始位置的谓词。 |
Z
zengyawen 已提交
838

839 840 841 842 843
**示例:**
```js
let predicates = new data_rdb.RdbPredicates("EMPLOYEE")
predicates.equalTo("NAME", "Rose").offsetAs(3)
```
Z
zengyawen 已提交
844 845 846 847 848 849


### groupBy

groupBy(fields: Array&lt;string&gt;): RdbPredicates

Z
zengyawen 已提交
850 851 852

配置RdbPredicates按指定列分组查询结果。

G
ge-yafang 已提交
853
**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core。
Z
zengyawen 已提交
854

855
**参数:**
Z
zengyawen 已提交
856 857 858
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| fields | Array&lt;string&gt; | 是 | 指定分组依赖的列名。 |
Z
zengyawen 已提交
859

Z
zengyawen 已提交
860
**返回值**
Z
zengyawen 已提交
861 862 863
| 类型 | 说明 |
| -------- | -------- |
| [RdbPredicates](#rdbpredicates) | 返回分组查询列的谓词。 |
Z
zengyawen 已提交
864

865 866 867 868 869
**示例:**
```js
let predicates = new data_rdb.RdbPredicates("EMPLOYEE")
predicates.groupBy(["AGE", "NAME"])
```
Z
zengyawen 已提交
870 871 872 873


### indexedBy

Z
zengyawen 已提交
874
indexedBy(field: string): RdbPredicates
Z
zengyawen 已提交
875 876 877

配置RdbPredicates以指定索引列。

G
ge-yafang 已提交
878
**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core。
Z
zengyawen 已提交
879

880
**参数:**
Z
zengyawen 已提交
881 882 883
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| field | string | 是 | 索引列的名称。 |
Z
zengyawen 已提交
884

Z
zengyawen 已提交
885
**返回值**
Z
zengyawen 已提交
886 887 888 889

| 类型 | 说明 |
| -------- | -------- |
| [RdbPredicates](#rdbpredicates) | 返回具有指定索引列的RdbPredicates。 |
Z
zengyawen 已提交
890

891 892 893 894 895
**示例:**
```js
let predicates = new data_rdb.RdbPredicates("EMPLOYEE")
predicates.indexedBy("SALARY_INDEX")
```
Z
zengyawen 已提交
896 897 898 899 900 901


### in

in(field: string, value: Array&lt;ValueType&gt;): RdbPredicates

Z
zengyawen 已提交
902 903 904

配置RdbPredicates以匹配数据字段为ValueType数组且值在给定范围内的指定字段。

G
ge-yafang 已提交
905
**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core。
Z
zengyawen 已提交
906

907
**参数:**
Z
zengyawen 已提交
908 909 910 911
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| field | string | 是 | 数据库表中的列名。 |
| value | Array&lt;[ValueType](#valuetype)&gt; | 是 | 以ValueType型数组形式指定的要匹配的值。 |
Z
zengyawen 已提交
912 913


Z
zengyawen 已提交
914
**返回值**
Z
zengyawen 已提交
915 916 917
| 类型 | 说明 |
| -------- | -------- |
| [RdbPredicates](#rdbpredicates) | 返回与指定字段匹配的谓词。 |
Z
zengyawen 已提交
918

919 920 921 922 923
**示例:**
```js
let predicates = new data_rdb.RdbPredicates("EMPLOYEE")
predicates.in("AGE", [18, 20])
```
Z
zengyawen 已提交
924 925 926 927 928 929


### notIn

notIn(field: string, value: Array&lt;ValueType&gt;): RdbPredicates

Z
zengyawen 已提交
930 931 932

将RdbPredicates配置为匹配数据字段为ValueType且值超出给定范围的指定字段。

G
ge-yafang 已提交
933
**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core。
Z
zengyawen 已提交
934

935
**参数:**
Z
zengyawen 已提交
936 937 938 939
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| field | string | 是 | 数据库表中的列名。 |
| value | Array&lt;[ValueType](#valuetype)&gt; | 是 | 以ValueType数组形式指定的要匹配的值。 |
Z
zengyawen 已提交
940 941


Z
zengyawen 已提交
942
**返回值**
Z
zengyawen 已提交
943 944 945
| 类型 | 说明 |
| -------- | -------- |
| [RdbPredicates](#rdbpredicates) | 返回与指定字段匹配的谓词。 |
Z
zengyawen 已提交
946

947 948 949 950 951
**示例:**
```js
let predicates = new data_rdb.RdbPredicates("EMPLOYEE")
predicates.notIn("NAME", ["Lisa", "Rose"])
```
Z
zengyawen 已提交
952 953 954 955 956 957 958 959 960 961


## RdbStore

提供管理关系数据库(RDB)方法的接口。


### insert

insert(name: string, values: ValuesBucket, callback: AsyncCallback&lt;number&gt;):void
Z
zengyawen 已提交
962 963 964

向目标表中插入一行数据,结果以callback形式返回。

G
ge-yafang 已提交
965
**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core。
W
wuyongning 已提交
966

967
**参数:**
Z
zengyawen 已提交
968 969 970 971 972
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| name | string | 是 | 指定的目标表名。 |
| values | [ValuesBucket](#valuesbucket) | 是 | 表示要插入到表中的数据行。 |
| callback | AsyncCallback&lt;number&gt; | 是 | 指定callback回调函数。如果操作成功,返回行ID;否则返回-1。 |
Z
zengyawen 已提交
973

974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989
**示例:**
```js
const valueBucket = {
    "NAME": "Lisa",
    "AGE": 18,
    "SALARY": 100.5,
    "CODES": new Uint8Array([1, 2, 3, 4, 5]),
}
rdbStore.insert("EMPLOYEE", valueBucket, function (err, ret) {
    if (err) {
        console.info("Insert failed, err: " + err)
        return
    }
    console.log("Insert first done: " + ret)
})
```
Z
zengyawen 已提交
990 991 992 993 994


### insert

insert(name: string, values: ValuesBucket):Promise&lt;number&gt;
Z
zengyawen 已提交
995 996 997

向目标表中插入一行数据,结果以Promise形式返回。

G
ge-yafang 已提交
998
**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core。
W
wuyongning 已提交
999

1000
**参数:**
Z
zengyawen 已提交
1001 1002 1003 1004
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| name | string | 是 | 指定的目标表名。 |
| values | [ValuesBucket](#valuesbucket) | 是 | 表示要插入到表中的数据行。 |
Z
zengyawen 已提交
1005

Z
zengyawen 已提交
1006
**返回值**
Z
zengyawen 已提交
1007 1008 1009
| 类型 | 说明 |
| -------- | -------- |
| Promise&lt;number&gt; | 指定Promise回调函数。如果操作成功,返回行ID;否则返回-1。 |
Z
zengyawen 已提交
1010

1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025
**示例:**
```js
const valueBucket = {
    "NAME": "Lisa",
    "AGE": 18,
    "SALARY": 100.5,
    "CODES": new Uint8Array([1, 2, 3, 4, 5]),
}
let promise = rdbStore.insert("EMPLOYEE", valueBucket)
promise.then(async (ret) => {
    console.log("Insert first done: " + ret)
}).catch((err) => {
    console.log("Insert failed, err: " + err)
})
```
Z
zengyawen 已提交
1026 1027 1028 1029 1030


### update

update(values: ValuesBucket, rdbPredicates: RdbPredicates, callback: AsyncCallback&lt;number&gt;):void
Z
zengyawen 已提交
1031 1032 1033

根据RdbPredicates的指定实例对象更新数据库中的数据,结果以callback形式返回。

G
ge-yafang 已提交
1034
**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core。
W
wuyongning 已提交
1035

1036
**参数:**
Z
zengyawen 已提交
1037 1038 1039 1040 1041
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| values | [ValuesBucket](#valuesbucket) | 是 | value指示数据库中要更新的数据行。键值对与数据库表的列名相关联 |
| rdbPredicates | [RdbPredicates](#rdbpredicates) | 是 | 表示要插入到表中的数据行。 |
| callback | AsyncCallback&lt;number&gt; | 是 | 指定的callback回调方法。返回受影响的行数。 |
Z
zengyawen 已提交
1042

1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060
**示例:**
```js
const valueBucket = {
    "NAME": "Rose",
    "AGE": 22,
    "SALARY": 200.5,
    "CODES": new Uint8Array([1, 2, 3, 4, 5]),
}
let predicates = new data_rdb.RdbPredicates("EMPLOYEE")
predicates.equalTo("NAME", "Lisa")
rdbStore.update(valueBucket, predicates, function (err, ret) {
    if (err) {
        console.info("Updated failed, err: " + err)
        return
    }
    console.log("Updated row count: " + ret)
})
```
Z
zengyawen 已提交
1061 1062 1063 1064 1065


### update

update(values: ValuesBucket, rdbPredicates: RdbPredicates):Promise&lt;number&gt;
Z
zengyawen 已提交
1066 1067 1068

根据RdbPredicates的指定实例对象更新数据库中的数据,结果以Promise形式返回。

G
ge-yafang 已提交
1069
**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core。
W
wuyongning 已提交
1070

1071
**参数:**
Z
zengyawen 已提交
1072 1073 1074 1075
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| values | [ValuesBucket](#valuesbucket) | 是 | value指示数据库中要更新的数据行。键值对与数据库表的列名相关联 |
| rdbPredicates | [RdbPredicates](#rdbpredicates) | 是 | 表示要插入到表中的数据行。 |
Z
zengyawen 已提交
1076

Z
zengyawen 已提交
1077
**返回值**
Z
zengyawen 已提交
1078 1079 1080
| 类型 | 说明 |
| -------- | -------- |
| Promise&lt;number&gt; | 指定的Promise回调方法。返回受影响的行数。 |
Z
zengyawen 已提交
1081

1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098
**示例:**
```js
const valueBucket = {
    "NAME": "Rose",
    "AGE": 22,
    "SALARY": 200.5,
    "CODES": new Uint8Array([1, 2, 3, 4, 5]),
}
let predicates = new data_rdb.RdbPredicates("EMPLOYEE")
predicates.equalTo("NAME", "Lisa")
let promise = rdbStore.update(valueBucket, predicates)
promise.then(async (ret) => {
    console.log("Updated row count: " + ret)
}).catch((err) => {
    console.info("Updated failed, err: " + err)
})
```
Z
zengyawen 已提交
1099 1100 1101 1102 1103 1104


### delete

delete(rdbPredicates: RdbPredicates, callback: AsyncCallback&lt;number&gt;):void

Z
zengyawen 已提交
1105 1106 1107

根据rdbPredicates的指定实例对象从数据库中删除数据,结果以callback形式返回。

G
ge-yafang 已提交
1108
**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core。
Z
zengyawen 已提交
1109

1110
**参数:**
Z
zengyawen 已提交
1111 1112 1113 1114
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| rdbPredicates | [RdbPredicates](#rdbpredicates) | 是 | RdbPredicates的实例对象指定的删除条件。 |
| callback | AsyncCallback&lt;number&gt; | 是 | 指定callback回调函数。返回受影响的行数。 |
Z
zengyawen 已提交
1115

1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127
**示例:**
```js
let predicates = new data_rdb.RdbPredicates("EMPLOYEE")
predicates.equalTo("NAME", "Lisa")
rdbStore.delete(predicates, function (err, rows) {
    if (err) {
        console.info("Delete failed, err: " + err)
        return
    }
    console.log("Delete rows: " + rows)
})
```
Z
zengyawen 已提交
1128 1129 1130 1131 1132


### delete

delete(rdbPredicates: RdbPredicates):Promise&lt;number&gt;
Z
zengyawen 已提交
1133 1134 1135

根据rdbPredicates的指定实例对象从数据库中删除数据,结果以Promise形式返回。

G
ge-yafang 已提交
1136
**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core。
W
wuyongning 已提交
1137

1138
**参数:**
Z
zengyawen 已提交
1139 1140 1141
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| rdbPredicates | [RdbPredicates](#rdbpredicates) | 是 | RdbPredicates的实例对象指定的删除条件。 |
Z
zengyawen 已提交
1142

Z
zengyawen 已提交
1143
**返回值**
Z
zengyawen 已提交
1144 1145 1146
| 类型 | 说明 |
| -------- | -------- |
| Promise&lt;number&gt; | 指定Promise回调函数。返回受影响的行数。 |
Z
zengyawen 已提交
1147

1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158
**示例:**
```js
let predicates = new data_rdb.RdbPredicates("EMPLOYEE")
predicates.equalTo("NAME", "Lisa")
let promise = rdbStore.delete(predicates)
promise.then((rows) => {
    console.log("Delete rows: " + rows)
}).catch((err) => {
    console.info("Delete failed, err: " + err)
})
```
Z
zengyawen 已提交
1159 1160 1161 1162 1163


### query

query(rdbPredicates: RdbPredicates, columns: Array&lt;string&gt;, callback: AsyncCallback&lt;ResultSet&gt;):void
Z
zengyawen 已提交
1164 1165 1166

根据指定条件查询数据库中的数据,结果以callback形式返回。

G
ge-yafang 已提交
1167
**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core。
W
wuyongning 已提交
1168

1169
**参数:**
Z
zengyawen 已提交
1170 1171 1172 1173 1174
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| rdbPredicates | [RdbPredicates](#rdbpredicates) | 是 | 表示rdbPredicates的实例对象指定的查询条件。 |
| columns | Array&lt;string&gt; | 是 | 表示要查询的列。如果值为空,则查询应用于所有列。 |
| callback | AsyncCallback&lt;[ResultSet](js-apis-data-resultset.md)&gt; | 是 | 指定callback回调函数。如果操作成功,则返回ResultSet对象。 |
Z
zengyawen 已提交
1175

1176 1177 1178 1179 1180 1181 1182 1183 1184 1185 1186 1187 1188
**示例:**
```js
let predicates = new data_rdb.RdbPredicates("EMPLOYEE")
predicates.equalTo("NAME", "Rose")
rdbStore.query(predicates, ["ID", "NAME", "AGE", "SALARY", "CODES"], function (err, resultSet) {
    if (err) {
        console.info("Query failed, err: " + err)
        return
    }
    console.log("resultSet column names:" + resultSet.columnNames)
    console.log("resultSet column count:" + resultSet.columnCount)
})
```
Z
zengyawen 已提交
1189 1190 1191 1192


### query

M
mangtsang 已提交
1193
query(rdbPredicates: RdbPredicates, columns?: Array&lt;string&gt;):Promise&lt;ResultSet&gt;
Z
zengyawen 已提交
1194 1195 1196

根据指定条件查询数据库中的数据,结果以Promise形式返回。

G
ge-yafang 已提交
1197
**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core。
W
wuyongning 已提交
1198

1199
**参数:**
Z
zengyawen 已提交
1200 1201 1202 1203
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| rdbPredicates | [RdbPredicates](#rdbpredicates) | 是 | 表示rdbPredicates的实例对象指定的查询条件。 |
| columns | Array&lt;string&gt; | 否 | 表示要查询的列。如果值为空,则查询应用于所有列。 |
Z
zengyawen 已提交
1204

Z
zengyawen 已提交
1205
**返回值**
Z
zengyawen 已提交
1206 1207 1208
| 类型 | 说明 |
| -------- | -------- |
| Promise&lt;[ResultSet](../apis/js-apis-data-resultset.md)&gt; | 指定Promise回调函数。如果操作成功,则返回ResultSet对象。 |
Z
zengyawen 已提交
1209

1210
**示例:**
G
ge-yafang 已提交
1211
  ```js
P
PaDoBoo 已提交
1212
  let predicates = new data_rdb.RdbPredicates("EMPLOYEE")
Z
zengyawen 已提交
1213
  predicates.equalTo("NAME", "Rose")
1214 1215
  let promise = rdbStore.query(predicates, ["ID", "NAME", "AGE", "SALARY", "CODES"])
  promise.then((resultSet) => {
W
wuyongning 已提交
1216 1217 1218
      console.log("resultSet column names:" + resultSet.columnNames)
      console.log("resultSet column count:" + resultSet.columnCount)
  }).catch((err) => {
1219
      console.info("Query failed, err: " + err)
W
wuyongning 已提交
1220
  })
Z
zengyawen 已提交
1221 1222 1223
  ```


M
mangtsang 已提交
1224 1225 1226 1227 1228 1229
### querySql<sup>8+</sup>

querySql(sql: string, bindArgs: Array&lt;ValueType&gt;, callback: AsyncCallback&lt;ResultSet&gt;):void

根据指定SQL语句查询数据库中的数据,结果以callback形式返回。

G
ge-yafang 已提交
1230
**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core。
W
wuyongning 已提交
1231

1232
**参数:**
Z
zengyawen 已提交
1233 1234 1235 1236 1237
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| sql | string | 是 | 指定要执行的SQL语句。 |
| bindArgs | Array&lt;[ValueType](#valuetype)&gt; | 是 | SQL语句中参数的值。 |
| callback | AsyncCallback&lt;[ResultSet](js-apis-data-resultset.md)&gt; | 是 | 指定callback回调函数。如果操作成功,则返回ResultSet对象。 |
M
mangtsang 已提交
1238

1239 1240 1241 1242 1243 1244 1245 1246 1247 1248 1249
**示例:**
```js
rdbStore.querySql("SELECT * FROM EMPLOYEE CROSS JOIN BOOK WHERE BOOK.NAME = ?", ['sanguo'], function (err, resultSet) {
    if (err) {
        console.info("Query failed, err: " + err)
        return
    }
    console.log("resultSet column names:" + resultSet.columnNames)
    console.log("resultSet column count:" + resultSet.columnCount)
})
```
M
mangtsang 已提交
1250 1251 1252 1253 1254 1255 1256 1257


### querySql<sup>8+</sup>

querySql(sql: string, bindArgs?: Array&lt;ValueType&gt;):Promise&lt;ResultSet&gt;

根据指定SQL语句查询数据库中的数据,结果以Promise形式返回。

G
ge-yafang 已提交
1258
**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core。
W
wuyongning 已提交
1259

1260
**参数:**
Z
zengyawen 已提交
1261 1262 1263 1264
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| sql | string | 是 | 指定要执行的SQL语句。 |
| bindArgs | Array&lt;[ValueType](#valuetype)&gt; | 否 | SQL语句中参数的值。 |
M
mangtsang 已提交
1265

Z
zengyawen 已提交
1266
**返回值**
Z
zengyawen 已提交
1267 1268 1269
| 类型 | 说明 |
| -------- | -------- |
| Promise&lt;[ResultSet](../apis/js-apis-data-resultset.md)&gt; | 指定Promise回调函数。如果操作成功,则返回ResultSet对象。 |
M
mangtsang 已提交
1270

1271 1272 1273 1274 1275 1276 1277 1278 1279 1280
**示例:**
```js
let promise = rdbStore.querySql("SELECT * FROM EMPLOYEE CROSS JOIN BOOK WHERE BOOK.NAME = ?", ['sanguo'])
promise.then((resultSet) => {
    console.log("resultSet column names:" + resultSet.columnNames)
    console.log("resultSet column count:" + resultSet.columnCount)
}).catch((err) => {
    console.info("Query failed, err: " + err)
})
```
M
mangtsang 已提交
1281 1282


Z
zengyawen 已提交
1283 1284 1285
### executeSql

executeSql(sql: string, bindArgs: Array&lt;ValueType&gt;, callback: AsyncCallback&lt;void&gt;):void
Z
zengyawen 已提交
1286

G
ge-yafang 已提交
1287
执行包含指定参数但不返回值的SQL语句,结果以callback形式返回。
Z
zengyawen 已提交
1288

G
ge-yafang 已提交
1289
**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core。
W
wuyongning 已提交
1290

1291
**参数:**
Z
zengyawen 已提交
1292 1293 1294 1295 1296
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| sql | string | 是 | 指定要执行的SQL语句。 |
| bindArgs | Array&lt;[ValueType](#valuetype)&gt; | 是 | SQL语句中参数的值。 |
| callback | AsyncCallback&lt;void&gt; | 是 | 指定callback回调函数。 |
Z
zengyawen 已提交
1297

1298 1299 1300 1301 1302 1303 1304 1305 1306 1307 1308
**示例:**
```js
const SQL_CREATE_TABLE = "CREATE TABLE IF NOT EXISTS EMPLOYEE (ID INTEGER PRIMARY KEY AUTOINCREMENT, NAME TEXT NOT NULL, AGE INTEGER, SALARY REAL, CODES BLOB)"
rdbStore.executeSql(SQL_CREATE_TABLE, null, function(err) {
    if (err) {
        console.info("executeSql failed, err: " + err)
        return
    }
    console.info('create table done.')
})
```
Z
zengyawen 已提交
1309 1310 1311 1312


### executeSql

M
mangtsang 已提交
1313
executeSql(sql: string, bindArgs?: Array&lt;ValueType&gt;):Promise&lt;void&gt;
Z
zengyawen 已提交
1314 1315 1316

执行包含指定参数但不返回值的SQL语句,结果以Promise形式返回。

G
ge-yafang 已提交
1317
**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core。
W
wuyongning 已提交
1318

1319
**参数:**
Z
zengyawen 已提交
1320 1321 1322 1323
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| sql | string | 是 | 指定要执行的SQL语句。 |
| bindArgs | Array&lt;[ValueType](#valuetype)&gt; | 否 | SQL语句中参数的值。 |
Z
zengyawen 已提交
1324

Z
zengyawen 已提交
1325
**返回值**
Z
zengyawen 已提交
1326 1327 1328
| 类型 | 说明 |
| -------- | -------- |
| Promise&lt;void&gt; | 指定Promise回调函数。 |
Z
zengyawen 已提交
1329

1330 1331 1332 1333 1334 1335 1336 1337 1338 1339
**示例:**
```js
const SQL_CREATE_TABLE = "CREATE TABLE IF NOT EXISTS EMPLOYEE (ID INTEGER PRIMARY KEY AUTOINCREMENT, NAME TEXT NOT NULL, AGE INTEGER, SALARY REAL, CODES BLOB)"
let promise = rdbStore.executeSql(SQL_CREATE_TABLE)
promise.then(() => {
    console.info('create table done.')
}).catch((err) => {
    console.info("ExecuteSql failed, err: " + err)
})
```
S
sun-dou 已提交
1340

W
wuyongning 已提交
1341 1342 1343 1344 1345 1346
### beginTransaction<sup>8+</sup>

beginTransaction():void

在开始执行SQL语句之前,开始事务。

G
ge-yafang 已提交
1347
**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core。
W
wuyongning 已提交
1348

1349
**示例:**
G
ge-yafang 已提交
1350
```js
1351 1352 1353 1354 1355 1356 1357 1358 1359 1360 1361 1362 1363 1364 1365
rdbStore.beginTransaction()
const valueBucket = {
    "name": "lisi",
    "age": 18,
    "salary": 100.5,
    "blobType": new Uint8Array([1, 2, 3]),
}
rdbStore.insert("test", valueBucket, function (err, ret) {
    if (err) {
        console.info("Insert failed, err: " + err)
        return
    }
    console.log("Insert successfully: " + ret)
})
rdbStore.commit()
W
wuyongning 已提交
1366 1367 1368 1369 1370 1371 1372 1373 1374
```


### commit<sup>8+</sup>

commit():void

提交已执行的SQL语句。

G
ge-yafang 已提交
1375
**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core。
W
wuyongning 已提交
1376

1377
**示例:**
G
ge-yafang 已提交
1378
```js
1379 1380 1381 1382 1383 1384 1385 1386 1387 1388 1389 1390 1391 1392 1393 1394
rdbStore.beginTransaction()
const valueBucket = {
    "name": "lisi",
    "age": 18,
    "salary": 100.5,
    "blobType": new Uint8Array([1, 2, 3]),
}

rdbStore.insert("test", valueBucket, function (err, ret) {
    if (err) {
        console.info("Insert failed, err: " + err)
        return
    }
    console.log("Insert successfully: " + ret)
})
rdbStore.commit()
W
wuyongning 已提交
1395 1396 1397 1398 1399 1400 1401 1402 1403
```


### rollBack<sup>8+</sup>

rollBack():void;

回滚已经执行的SQL语句。

G
ge-yafang 已提交
1404
**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core。
W
wuyongning 已提交
1405

1406
**示例:**
G
ge-yafang 已提交
1407
```js
1408 1409 1410 1411 1412 1413 1414 1415 1416 1417 1418 1419 1420 1421 1422 1423 1424 1425 1426 1427
try {
    rdbStore.beginTransaction()
    const valueBucket = {
        "id": 1,
        "name": "lisi",
        "age": 18,
        "salary": 100.5,
        "blobType": new Uint8Array([1, 2, 3]),
    }
    rdbStore.insert("test", valueBucket, function (err, ret) {
        if (err) {
            console.info("Insert failed, err: " + err)
            return
        }
        console.log("Insert successfully: " + ret)
    })
    rdbStore.commit()
} catch (e) {
    rdbStore.rollBack()
}
W
wuyongning 已提交
1428 1429 1430
```


Z
zengyawen 已提交
1431
### setDistributedTables<sup>8+</sup>
S
sun-dou 已提交
1432

W
wuyongning 已提交
1433
setDistributedTables(tables: Array&lt;string&gt;, callback: AsyncCallback&lt;void&gt;): void
S
sun-dou 已提交
1434

G
ge-yafang 已提交
1435
设置分布式列表,结果以callback形式返回。
S
sun-dou 已提交
1436

G
ge-yafang 已提交
1437
**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core。
W
wuyongning 已提交
1438

1439
**参数:**
Z
zengyawen 已提交
1440 1441 1442 1443
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| tables | Array&lt;string&gt; | 是 | 要设置的分布式列表表名 |
| callback | AsyncCallback&lt;void&gt; | 是 | 指定callback回调函数。 |
S
sun-dou 已提交
1444

1445 1446 1447 1448 1449 1450 1451 1452 1453
**示例:**
```js
rdbStore.setDistributedTables(["EMPLOYEE"], function (err) {
    if (err) {
        console.info('setDistributedTables failed, err: ' + err)
        return
    }
    console.info('setDistributedTables successfully.')
})
G
ge-yafang 已提交
1454
```
S
sun-dou 已提交
1455 1456


Z
zengyawen 已提交
1457
### setDistributedTables<sup>8+</sup>
S
sun-dou 已提交
1458

W
wuyongning 已提交
1459
 setDistributedTables(tables: Array&lt;string&gt;): Promise&lt;void&gt;
S
sun-dou 已提交
1460 1461 1462

设置分布式列表,结果以Promise形式返回。

G
ge-yafang 已提交
1463
**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core。
W
wuyongning 已提交
1464

1465
**参数:**
Z
zengyawen 已提交
1466 1467 1468
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| tables | Array&lt;string&gt; | 是 | 要设置的分布式列表表名。 |
S
sun-dou 已提交
1469

Z
zengyawen 已提交
1470
**返回值**
Z
zengyawen 已提交
1471 1472 1473
| 类型 | 说明 |
| -------- | -------- |
| Promise&lt;void&gt; | 指定Promise回调函数。 |
S
sun-dou 已提交
1474

1475 1476 1477 1478 1479 1480 1481 1482 1483
**示例:**
```js
let promise = rdbStore.setDistributedTables(["EMPLOYEE"])
promise.then(() => {
    console.info("setDistributedTables successfully.")
}).catch((err) => {
    console.info("setDistributedTables failed, err: " + err)
})
```
S
sun-dou 已提交
1484

Z
zengyawen 已提交
1485
### obtainDistributedTableName<sup>8+</sup>
S
sun-dou 已提交
1486

W
wuyongning 已提交
1487
obtainDistributedTableName(device: string, table: string, callback: AsyncCallback&lt;string&gt;): void
S
sun-dou 已提交
1488

G
ge-yafang 已提交
1489
根据本地表名获取指定远程设备的分布式表名。在查询远程设备数据库时,需要使用分布式表名, 结果以callback形式返回。
S
sun-dou 已提交
1490

G
ge-yafang 已提交
1491
**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core。
W
wuyongning 已提交
1492

1493
**参数:**
Z
zengyawen 已提交
1494 1495 1496 1497 1498
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| device | string | 是 | 远程设备 。|
| table | string | 是 | 本地表名。 |
| callback | AsyncCallback&lt;string&gt; | 是 | 指定的callback回调函数。如果操作成功,返回远程设备的分布式表名。 |
S
sun-dou 已提交
1499

1500 1501
**示例:**
```js
1502
rdbStore.obtainDistributedTableName("12345678abcde", "EMPLOYEE", function (err, tableName) {
1503 1504 1505 1506 1507 1508 1509
    if (err) {
        console.info('obtainDistributedTableName failed, err: ' + err)
        return
    }
    console.info('obtainDistributedTableName successfully, tableName=.' + tableName)
})
```
S
sun-dou 已提交
1510 1511


Z
zengyawen 已提交
1512
### obtainDistributedTableName<sup>8+</sup>
S
sun-dou 已提交
1513

W
wuyongning 已提交
1514
 obtainDistributedTableName(device: string, table: string): Promise&lt;string&gt;
S
sun-dou 已提交
1515 1516 1517

根据本地表名获取指定远程设备的分布式表名。在查询远程设备数据库时,需要使用分布式表名,结果以Promise形式返回。

G
ge-yafang 已提交
1518
**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core。
W
wuyongning 已提交
1519

1520
**参数:**
Z
zengyawen 已提交
1521 1522 1523 1524
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| device | string | 是 | 远程设备。 |
| table | string | 是 | 本地表名。 |
S
sun-dou 已提交
1525

Z
zengyawen 已提交
1526
**返回值**
Z
zengyawen 已提交
1527 1528 1529
| 类型 | 说明 |
| -------- | -------- |
| Promise&lt;string&gt; | 指定Promise回调函数。如果操作成功,返回远程设备的分布式表名。 |
S
sun-dou 已提交
1530

1531 1532
**示例:**
```js
1533
let promise = rdbStore.obtainDistributedTableName("12345678abcde", "EMPLOYEE")
1534 1535 1536 1537 1538 1539
promise.then((tableName) => {
    console.info('obtainDistributedTableName successfully, tableName=' + tableName)
}).catch((err) => {
    console.info('obtainDistributedTableName failed, err: ' + err)
})
```
S
sun-dou 已提交
1540

W
wuyongning 已提交
1541
### sync<sup>8+</sup>
S
sun-dou 已提交
1542

W
wuyongning 已提交
1543
sync(mode: SyncMode, predicates: RdbPredicates, callback: AsyncCallback&lt;Array&lt;[string, number]&gt;&gt;): void
S
sun-dou 已提交
1544

G
ge-yafang 已提交
1545
在设备之间同步数据, 结果以callback形式返回。
S
sun-dou 已提交
1546

G
ge-yafang 已提交
1547
**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core。
W
wuyongning 已提交
1548

1549
**参数:**
Z
zengyawen 已提交
1550 1551 1552 1553 1554
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| mode | [SyncMode](#syncmode8) | 是 | 指同步模式。该值可以是推、拉。 |
| predicates | [RdbPredicates](#rdbpredicates) | 是 | 约束同步数据和设备。 |
| callback | AsyncCallback&lt;Array&lt;[string, number]&gt;&gt; | 是 | 指定的callback回调函数,用于向调用者发送同步结果。string:设备ID;number:每个设备同步状态,0表示成功,其他值表示失败。|
S
sun-dou 已提交
1555

1556 1557
**示例:**
```js
1558
let predicates = new data_rdb.RdbPredicates('EMPLOYEE')
1559
predicates.inDevices(['12345678abcde'])
1560
rdbStore.sync(data_rdb.SyncMode.SYNC_MODE_PUSH, predicates, function (err, result) {
1561 1562 1563 1564 1565 1566 1567 1568 1569 1570
    if (err) {
        console.log('sync failed, err: ' + err)
        return
    }
    console.log('sync done.')
    for (let i = 0; i < result.length; i++) {
        console.log('device=' + result[i][0] + ' status=' + result[i][1])
    }
})
```
S
sun-dou 已提交
1571 1572


W
wuyongning 已提交
1573
### sync<sup>8+</sup>
S
sun-dou 已提交
1574

W
wuyongning 已提交
1575
 sync(mode: SyncMode, predicates: RdbPredicates): Promise&lt;Array&lt;[string, number]&gt;&gt;
S
sun-dou 已提交
1576 1577 1578

在设备之间同步数据,结果以Promise形式返回。

G
ge-yafang 已提交
1579
**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core。
W
wuyongning 已提交
1580

1581
**参数:**
Z
zengyawen 已提交
1582 1583 1584 1585
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| mode | [SyncMode](#syncmode8) | 是 | 指同步模式。该值可以是推、拉。 |
| predicates | [RdbPredicates](#rdbpredicates) | 是 | 约束同步数据和设备。 |
S
sun-dou 已提交
1586

Z
zengyawen 已提交
1587
**返回值**
Z
zengyawen 已提交
1588 1589 1590 1591

| 类型 | 说明 |
| -------- | -------- |
| Promise&lt;Array&lt;[string, number]&gt;&gt; | 指定Promise回调函数,用于向调用者发送同步结果。string:设备ID;number:每个设备同步状态,0表示成功,其他值表示失败。 |
S
sun-dou 已提交
1592

1593 1594 1595 1596 1597 1598 1599 1600 1601 1602 1603 1604 1605 1606
**示例:**
```js
let predicates = new data_rdb.RdbPredicates('EMPLOYEE')
predicates.inDevices(['12345678abcde'])
let promise = rdbStore.sync(data_rdb.SyncMode.SYNC_MODE_PUSH, predicates)
promise.then((result) =>{
    console.log('sync done.')
    for (let i = 0; i < result.length; i++) {
        console.log('device=' + result[i][0] + ' status=' + result[i][1])
    }
}).catch((err) => {
    console.log('sync failed')
})
```
S
sun-dou 已提交
1607

Z
zengyawen 已提交
1608
### on('dataChange')<sup>8+</sup>
S
sun-dou 已提交
1609

W
wuyongning 已提交
1610
on(event: 'dataChange', type: SubscribeType, observer: Callback&lt;Array&lt;string&gt;&gt;): void
S
sun-dou 已提交
1611 1612 1613

注册数据库的观察者。当分布式数据库中的数据发生更改时,将调用回调。

G
ge-yafang 已提交
1614
**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core。
W
wuyongning 已提交
1615

1616
**参数:**
Z
zengyawen 已提交
1617

Z
zengyawen 已提交
1618 1619 1620 1621 1622
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| event | string | 是 | 取值为'dataChange',表示数据更改。 |
| type | [SubscribeType](#subscribetype8) | 是 | 指在{@code SubscribeType}中定义的订阅类型。 |
| observer | Callback&lt;Array&lt;string&gt;&gt; | 是 | 指分布式数据库中数据更改事件的观察者。 |
S
sun-dou 已提交
1623

1624 1625 1626 1627 1628 1629 1630 1631 1632 1633 1634 1635 1636
**示例:**
```js
function storeObserver(devices) {
    for (let i = 0; i < devices.length; i++) {
        console.log('device=' + devices[i] + ' data changed')
    }
}
try {
    rdbStore.on('dataChange', data_rdb.SubscribeType.SUBSCRIBE_TYPE_REMOTE, storeObserver)
} catch (err) {
    console.log('register observer failed')
}
```
S
sun-dou 已提交
1637

Z
zengyawen 已提交
1638
### off('dataChange')<sup>8+</sup>
S
sun-dou 已提交
1639

W
wuyongning 已提交
1640
off(event:'dataChange', type: SubscribeType, observer: Callback&lt;Array&lt;string&gt;&gt;): void
S
sun-dou 已提交
1641

G
ge-yafang 已提交
1642
从数据库中删除指定类型的指定观察者, 结果以callback形式返回。
S
sun-dou 已提交
1643

G
ge-yafang 已提交
1644
**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core。
W
wuyongning 已提交
1645

1646
**参数:**
Z
zengyawen 已提交
1647

Z
zengyawen 已提交
1648 1649 1650 1651 1652
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| event | string | 是 | 取值为'dataChange',表示数据更改。 |
| type | [SubscribeType](#subscribetype8)    | 是 | 指在{@code SubscribeType}中定义的订阅类型。 |
| observer | Callback&lt;Array&lt;string&gt;&gt; | 是 | 指已注册的数据更改观察者。|
S
sun-dou 已提交
1653

1654 1655 1656 1657 1658 1659 1660 1661 1662 1663 1664 1665 1666
**示例:**
```js
function storeObserver(devices) {
    for (let i = 0; i < devices.length; i++) {
        console.log('device=' + devices[i] + ' data changed')
    }
}
try {
    rdbStore.off('dataChange', data_rdb.SubscribeType.SUBSCRIBE_TYPE_REMOTE, storeObserver)
} catch (err) {
    console.log('unregister observer failed')
}
```
S
sun-dou 已提交
1667

Z
zengyawen 已提交
1668
## StoreConfig
Z
zengyawen 已提交
1669 1670 1671

管理关系数据库配置。

G
ge-yafang 已提交
1672
**系统能力:** 以下各项对应的系统能力均为SystemCapability.DistributedDataManager.RelationalStore.Core。
W
wuyongning 已提交
1673

Z
zengyawen 已提交
1674 1675 1676 1677 1678 1679
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| name | string | 是 | 数据库文件名。 |


## ValueType
Z
zengyawen 已提交
1680 1681 1682

用于表示允许的数据字段类型。

G
ge-yafang 已提交
1683
**系统能力:** 以下各项对应的系统能力均为SystemCapability.DistributedDataManager.RelationalStore.Core。
W
wuyongning 已提交
1684

Z
zengyawen 已提交
1685 1686 1687 1688
| 名称 | 说明 |
| -------- | -------- |
| number | 表示值类型为数字。 |
| string | 表示值类型为字符。 |
1689
| boolean | 表示值类型为布尔值。|
Z
zengyawen 已提交
1690 1691 1692


## ValuesBucket
Z
zengyawen 已提交
1693 1694 1695

用于存储键值对。

G
ge-yafang 已提交
1696
**系统能力:** 以下各项对应的系统能力均为SystemCapability.DistributedDataManager.RelationalStore.Core。
Z
zengyawen 已提交
1697

Z
zengyawen 已提交
1698 1699 1700
| 名称 | 参数类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| [key:&nbsp;string] | [ValueType](#valuetype)\|&nbsp;Uint8Array&nbsp;\|&nbsp;null | 是 | 用于存储键值对。 |
S
sun-dou 已提交
1701 1702


W
wuyongning 已提交
1703
## SyncMode<sup>8+</sup>
S
sun-dou 已提交
1704 1705 1706

指数据库同步模式。

G
ge-yafang 已提交
1707
**系统能力:** 以下各项对应的系统能力均为SystemCapability.DistributedDataManager.RelationalStore.Core。
S
sun-dou 已提交
1708

W
wuyongning 已提交
1709 1710 1711 1712 1713 1714
| 名称       | 默认值 | 说明 |
| --------  | ----- |----- |
| SYNC_MODE_PUSH | 0 | 表示数据从本地设备推送到远程设备。 |
| SYNC_MODE_PULL | 1 | 表示数据从远程设备拉至本地设备。 |

## SubscribeType<sup>8+</sup>
S
sun-dou 已提交
1715 1716 1717

描述订阅类型。

G
ge-yafang 已提交
1718
**系统能力:** 以下各项对应的系统能力均为SystemCapability.DistributedDataManager.RelationalStore.Core。
W
wuyongning 已提交
1719 1720 1721 1722

| 名称      | 默认值 | 说明 |
| -------- | ----- |---- |
| SUBSCRIBE_TYPE_REMOTE | 0 | 订阅远程数据更改。 |