• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# oh_rdb_transaction.h
2<!--Kit: ArkData-->
3<!--Subsystem: DistributedDataManager-->
4<!--Owner: @baijidong-->
5<!--Designer: @widecode; @htt1997-->
6<!--Tester: @yippo; @logic42-->
7<!--Adviser: @ge-yafang-->
8
9## 概述
10
11提供与数据库事务相关的函数和枚举。
12
13**引用文件:** <database/rdb/oh_rdb_transaction.h>
14
15**库:** libnative_rdb_ndk.z.so
16
17**系统能力:** SystemCapability.DistributedDataManager.RelationalStore.Core
18
19**起始版本:** 18
20
21**相关模块:** [RDB](capi-rdb.md)
22
23## 汇总
24
25### 结构体
26
27| 名称                                               | typedef关键字       | 描述                                                         |
28| -------------------------------------------------- | ------------------- | ------------------------------------------------------------ |
29| [OH_RDB_TransOptions](capi-rdb-oh-rdb-transoptions.md) | OH_RDB_TransOptions | 定义[OH_RDB_TransOptions](capi-rdb-oh-rdb-transoptions.md)结构类型。 |
30| [OH_Rdb_Transaction](capi-rdb-oh-rdb-transaction.md)   | OH_Rdb_Transaction  | 定义[OH_RDB_TransOptions](capi-rdb-oh-rdb-transoptions.md)结构类型。 |
31
32### 枚举
33
34| 名称                                  | typedef关键字    | 描述                       |
35| ------------------------------------- | ---------------- | -------------------------- |
36| [OH_RDB_TransType](#oh_rdb_transtype) | OH_RDB_TransType | 表示关系型数据库事务类型。 |
37
38### 函数
39
40| 名称                                                         | 描述                                             |
41| ------------------------------------------------------------ | ------------------------------------------------ |
42| [OH_RDB_TransOptions *OH_RdbTrans_CreateOptions(void)](#oh_rdbtrans_createoptions) | 创建事务配置对象。                               |
43| [int OH_RdbTrans_DestroyOptions(OH_RDB_TransOptions *options)](#oh_rdbtrans_destroyoptions) | 销毁事务配置对象。                               |
44| [int OH_RdbTransOption_SetType(OH_RDB_TransOptions *options, OH_RDB_TransType type)](#oh_rdbtransoption_settype) | 设置关系型数据库事务类型。                       |
45| [int OH_RdbTrans_Commit(OH_Rdb_Transaction *trans)](#oh_rdbtrans_commit) | 提交事务。                                       |
46| [int OH_RdbTrans_Rollback(OH_Rdb_Transaction *trans)](#oh_rdbtrans_rollback) | 回滚事务。                                       |
47| [int OH_RdbTrans_Insert(OH_Rdb_Transaction *trans, const char *table, const OH_VBucket *row, int64_t *rowId)](#oh_rdbtrans_insert) | 将一行数据插入到目标表中。                       |
48| [int OH_RdbTrans_InsertWithConflictResolution(OH_Rdb_Transaction *trans, const char *table, const OH_VBucket *row,Rdb_ConflictResolution resolution, int64_t *rowId)](#oh_rdbtrans_insertwithconflictresolution) | 将一行数据插入到目标表中,支持冲突解决。         |
49| [int OH_RdbTrans_BatchInsert(OH_Rdb_Transaction *trans, const char *table, const OH_Data_VBuckets *rows,Rdb_ConflictResolution resolution, int64_t *changes)](#oh_rdbtrans_batchinsert) | 将一组数据批量插入到目标表中。                   |
50| [int OH_RdbTrans_Update(OH_Rdb_Transaction *trans, const OH_VBucket *row, const OH_Predicates *predicates,int64_t *changes)](#oh_rdbtrans_update) | 根据指定的条件更新数据库中的数据。               |
51| [int OH_RdbTrans_UpdateWithConflictResolution(OH_Rdb_Transaction *trans, const OH_VBucket *row,const OH_Predicates *predicates, Rdb_ConflictResolution resolution, int64_t *changes)](#oh_rdbtrans_updatewithconflictresolution) | 根据指定条件更新数据库中的数据,并支持冲突解决。 |
52| [int OH_RdbTrans_Delete(OH_Rdb_Transaction *trans, const OH_Predicates *predicates, int64_t *changes)](#oh_rdbtrans_delete) | 根据指定条件从数据库中删除数据。                 |
53| [OH_Cursor *OH_RdbTrans_Query(OH_Rdb_Transaction *trans, const OH_Predicates *predicates, const char *columns[],int len)](#oh_rdbtrans_query) | 根据指定的条件查询数据库中的数据。               |
54| [OH_Cursor *OH_RdbTrans_QuerySql(OH_Rdb_Transaction *trans, const char *sql, const OH_Data_Values *args)](#oh_rdbtrans_querysql) | 根据SQL语句查询数据库中的数据。                  |
55| [int OH_RdbTrans_Execute(OH_Rdb_Transaction *trans, const char *sql, const OH_Data_Values *args, OH_Data_Value **result)](#oh_rdbtrans_execute) | 执行包含指定参数的SQL语句。                      |
56| [int OH_RdbTrans_Destroy(OH_Rdb_Transaction *trans)](#oh_rdbtrans_destroy) | 销毁事务对象。                                   |
57
58## 枚举类型说明
59
60### OH_RDB_TransType
61
62```
63enum OH_RDB_TransType
64```
65
66**描述**
67
68表示关系型数据库事务类型。
69
70**起始版本:** 18
71
72| 枚举项                 | 描述                                                         |
73| ---------------------- | ------------------------------------------------------------ |
74| RDB_TRANS_DEFERRED = 0 | 在首次访问数据库之前,事务默认设置不会启动。                 |
75| RDB_TRANS_IMMEDIATE    | 数据库连接立即开始新的写入,而无需等待写入语句。             |
76| RDB_TRANS_EXCLUSIVE    | 与RDB_TRANS_IMMEDIATE类型相似,写事务会立即启动。<br>RDB_TRANS_EXCLUSIVE和RDB_TRANS_IMMEDIATE类型在WAL模式下相同,但在其他日志模式下,RDB_TRANS_EXCLUSIVE会阻止其他数据库连接在事务进行时读取数据库。 |
77| RDB_TRANS_BUTT         | RDB事务类型的最大值。                                        |
78
79
80## 函数说明
81
82### OH_RdbTrans_CreateOptions()
83
84```
85OH_RDB_TransOptions *OH_RdbTrans_CreateOptions(void)
86```
87
88**描述**
89
90创建事务配置对象。
91
92**起始版本:** 18
93
94**返回:**
95
96| 类型                                               | 说明                                                         |
97| -------------------------------------------------- | ------------------------------------------------------------ |
98| [OH_RDB_TransOptions](capi-rdb-oh-rdb-transoptions.md) | 执行成功时返回指向[OH_RDB_TransOptions](capi-rdb-oh-rdb-transoptions.md)实例的指针。否则返回nullptr。<br>使用完成后,必须通过[OH_RdbTrans_DestroyOptions](capi-oh-rdb-transaction-h.md#oh_rdbtrans_destroyoptions)接口释放内存。 |
99
100### OH_RdbTrans_DestroyOptions()
101
102```
103int OH_RdbTrans_DestroyOptions(OH_RDB_TransOptions *options)
104```
105
106**描述**
107
108销毁事务配置对象。
109
110**起始版本:** 18
111
112
113**参数:**
114
115| 参数项                                                      | 描述                                                         |
116| ----------------------------------------------------------- | ------------------------------------------------------------ |
117| [OH_RDB_TransOptions](capi-rdb-oh-rdb-transoptions.md) *options | 表示指向[OH_RDB_TransOptions](capi-rdb-oh-rdb-transoptions.md)实例的指针。 |
118
119**返回:**
120
121| 类型 | 说明                                                         |
122| ---- | ------------------------------------------------------------ |
123| int  | 返回错误码。<br>返回RDB_OK表示成功。<br>返回RDB_E_INVALID_ARGS表示无效参数。 |
124
125### OH_RdbTransOption_SetType()
126
127```
128int OH_RdbTransOption_SetType(OH_RDB_TransOptions *options, OH_RDB_TransType type)
129```
130
131**描述**
132
133设置关系型数据库事务类型。
134
135**起始版本:** 18
136
137
138**参数:**
139
140| 参数项                                                      | 描述                                                         |
141| ----------------------------------------------------------- | ------------------------------------------------------------ |
142| [OH_RDB_TransOptions](capi-rdb-oh-rdb-transoptions.md) *options | 表示指向[OH_RDB_TransOptions](capi-rdb-oh-rdb-transoptions.md)实例的指针。 |
143| [OH_RDB_TransType](#oh_rdb_transtype) type                  | 表示关系型数据库事务类型。                                   |
144
145**返回:**
146
147| 类型 | 说明                                                         |
148| ---- | ------------------------------------------------------------ |
149| int  | 返回错误码。<br>返回RDB_OK表示成功。<br>返回RDB_E_INVALID_ARGS表示无效参数。 |
150
151### OH_RdbTrans_Commit()
152
153```
154int OH_RdbTrans_Commit(OH_Rdb_Transaction *trans)
155```
156
157**描述**
158
159提交事务。
160
161**起始版本:** 18
162
163
164**参数:**
165
166| 参数项                                                  | 描述                                                         |
167| ------------------------------------------------------- | ------------------------------------------------------------ |
168| [OH_Rdb_Transaction](capi-rdb-oh-rdb-transaction.md) *trans | 表示指向[OH_Rdb_Transaction](capi-rdb-oh-rdb-transaction.md)实例的指针。 |
169
170**返回:**
171
172| 类型 | 说明                                                         |
173| ---- | ------------------------------------------------------------ |
174| int  | 返回执行结果。<br>返回RDB_OK表示成功。<br>返回RDB_E_ERROR表示数据库常见错误。<br>返回RDB_E_INVALID_ARGS表示无效参数。<br>返回RDB_E_ALREADY_CLOSED表示数据库已经关闭。<br>返回RDB_E_SQLITE_FULL表示SQLite错误码:数据库已满。<br>返回RDB_E_SQLITE_CORRUPT表示数据库损坏。<br>返回RDB_E_SQLITE_PERM表示SQLite错误码:访问权限被拒绝。<br>返回RDB_E_SQLITE_BUSY表示SQLite错误码:数据库文件被锁定。<br>返回RDB_E_SQLITE_NOMEM表示SQLite错误码:数据库内存不足。<br>返回RDB_E_SQLITE_READONLY表示SQLite错误码:尝试写入只读数据库。<br>返回RDB_E_SQLITE_IOERR表示SQLite错误码:磁盘I/O错误。 |
175
176### OH_RdbTrans_Rollback()
177
178```
179int OH_RdbTrans_Rollback(OH_Rdb_Transaction *trans)
180```
181
182**描述**
183
184回滚事务。
185
186**起始版本:** 18
187
188
189**参数:**
190
191| 参数项                                                  | 描述                                                         |
192| ------------------------------------------------------- | ------------------------------------------------------------ |
193| [OH_Rdb_Transaction](capi-rdb-oh-rdb-transaction.md) *trans | 表示指向[OH_Rdb_Transaction](capi-rdb-oh-rdb-transaction.md)实例的指针。 |
194
195**返回:**
196
197| 类型 | 说明                                                         |
198| ---- | ------------------------------------------------------------ |
199| int  | 返回执行结果。<br>返回RDB_OK表示成功。<br>返回RDB_E_ERROR表示数据库常见错误。<br>返回RDB_E_INVALID_ARGS表示无效参数。<br>返回RDB_E_ALREADY_CLOSED表示数据库已经关闭。<br>返回RDB_E_SQLITE_FULL表示SQLite错误码:数据库已满。<br>返回RDB_E_SQLITE_CORRUPT表示数据库损坏。<br>返回RDB_E_SQLITE_PERM表示SQLite错误码:访问权限被拒绝。<br>返回RDB_E_SQLITE_BUSY表示SQLite错误码:数据库文件被锁定。<br>返回RDB_E_SQLITE_NOMEM表示SQLite错误码:数据库内存不足。<br>返回RDB_E_SQLITE_READONLY表示SQLite错误码:尝试写入只读数据库。<br>返回RDB_E_SQLITE_IOERR表示SQLite错误码:磁盘I/O错误。 |
200
201### OH_RdbTrans_Insert()
202
203```
204int OH_RdbTrans_Insert(OH_Rdb_Transaction *trans, const char *table, const OH_VBucket *row, int64_t *rowId)
205```
206
207**描述**
208
209将一行数据插入到目标表中。
210
211**起始版本:** 18
212
213
214**参数:**
215
216| 参数项                                                  | 描述                                                         |
217| ------------------------------------------------------- | ------------------------------------------------------------ |
218| [OH_Rdb_Transaction](capi-rdb-oh-rdb-transaction.md) *trans | 表示指向[OH_Rdb_Transaction](capi-rdb-oh-rdb-transaction.md)实例的指针。 |
219| const char *table                                       | 表示目标表。                                                 |
220| const [OH_VBucket](capi-rdb-oh-vbucket.md) *row             | 表示要插入到表中的数据行。                                   |
221| int64_t *rowId                                          | 输出参数,表示插入后返回的行号。                             |
222
223**返回:**
224
225| 类型 | 说明                                                         |
226| ---- | ------------------------------------------------------------ |
227| int  | 返回执行结果。<br>返回RDB_OK表示成功。<br>返回RDB_E_ERROR表示数据库常见错误。<br>返回RDB_E_INVALID_ARGS表示无效参数。<br>返回RDB_E_ALREADY_CLOSED表示数据库已经关闭。<br>返回RDB_E_WAL_SIZE_OVER_LIMIT表示WAL日志文件大小超过默认值。<br>返回RDB_E_SQLITE_FULL表示SQLite错误码:数据库已满。<br>返回RDB_E_SQLITE_CORRUPT表示数据库损坏。<br>返回RDB_E_SQLITE_PERM表示SQLite错误码:访问权限被拒绝。<br>返回RDB_E_SQLITE_BUSY表示SQLite错误码:数据库文件被锁定。<br>返回RDB_E_SQLITE_LOCKED表示SQLite错误码:数据库中的表被锁定。<br>返回RDB_E_SQLITE_NOMEM表示SQLite错误码:数据库内存不足。<br>返回RDB_E_SQLITE_READONLY表示SQLite错误码:尝试写入只读数据库。<br>返回RDB_E_SQLITE_IOERR表示SQLite错误码:磁盘I/O错误。<br>返回RDB_E_SQLITE_TOO_BIG表示SQLite错误码:TEXT或BLOB超出大小限制。<br>返回RDB_E_SQLITE_MISMATCH表示SQLite错误码:数据类型不匹配。 |
228
229### OH_RdbTrans_InsertWithConflictResolution()
230
231```
232int OH_RdbTrans_InsertWithConflictResolution(OH_Rdb_Transaction *trans, const char *table, const OH_VBucket *row,Rdb_ConflictResolution resolution, int64_t *rowId)
233```
234
235**描述**
236
237将一行数据插入到目标表中,支持冲突解决。
238
239**起始版本:** 20
240
241
242**参数:**
243
244| 参数项                                                  | 描述                                                         |
245| ------------------------------------------------------- | ------------------------------------------------------------ |
246| [OH_Rdb_Transaction](capi-rdb-oh-rdb-transaction.md) *trans | 表示指向[OH_Rdb_Transaction](capi-rdb-oh-rdb-transaction.md)实例的指针。 |
247| const char *table                                       | 表示目标表名称。                                             |
248| const [OH_VBucket](capi-rdb-oh-vbucket.md) *row             | 表示要插入到表中的数据。                                     |
249| Rdb_ConflictResolution resolution                       | 表示发生冲突时的解决策略。                                   |
250| int64_t *rowId                                          | 输出参数,表示插入成功后返回的行号。                         |
251
252**返回:**
253
254| 类型 | 说明                                                         |
255| ---- | ------------------------------------------------------------ |
256| int  | 返回执行结果。<br>返回RDB_OK表示成功。<br>返回RDB_E_ERROR表示数据库常见错误。<br>返回RDB_E_INVALID_ARGS表示输入参数无效。<br>返回RDB_E_ALREADY_CLOSED表示数据库已关闭。<br>返回RDB_E_WAL_SIZE_OVER_LIMIT表示WAL日志文件大小超过默认值。<br>返回RDB_E_SQLITE_FULL表示SQLite错误码:数据库已满。<br>返回RDB_E_SQLITE_CORRUPT表示数据库损坏。<br>返回RDB_E_SQLITE_PERM表示SQLite错误码:访问权限被拒绝。<br>返回RDB_E_SQLITE_BUSY表示SQLite错误码:数据库文件被锁定。<br>返回RDB_E_SQLITE_LOCKED表示SQLite错误码:数据库中的表被锁定。<br>返回RDB_E_SQLITE_NOMEM表示SQLite错误码:数据库内存不足。<br>返回RDB_E_SQLITE_READONLY表示SQLite错误码:尝试写入只读数据库。<br>返回RDB_E_SQLITE_IOERR表示SQLite错误码:磁盘I/O错误。<br>返回RDB_E_SQLITE_TOO_BIG表示SQLite错误码:TEXT或BLOB超出大小限制。<br>返回RDB_E_SQLITE_MISMATCH表示SQLite错误码:数据类型不匹配。<br>返回RDB_E_SQLITE_CONSTRAINT表示SQLite错误码:违反约束导致操作中止。 |
257
258### OH_RdbTrans_BatchInsert()
259
260```
261int OH_RdbTrans_BatchInsert(OH_Rdb_Transaction *trans, const char *table, const OH_Data_VBuckets *rows, Rdb_ConflictResolution resolution, int64_t *changes)
262```
263
264**描述**
265
266将一组数据批量插入到目标表中。
267
268**起始版本:** 18
269
270
271**参数:**
272
273| 参数项                                                   | 描述                                                         |
274| -------------------------------------------------------- | ------------------------------------------------------------ |
275| [OH_Rdb_Transaction](capi-rdb-oh-rdb-transaction.md) *trans  | 表示指向[OH_Rdb_Transaction](capi-rdb-oh-rdb-transaction.md)实例的指针。 |
276| const char *table                                        | 表示目标表。                                                 |
277| const [OH_Data_VBuckets](capi-rdb-oh-data-vbuckets.md) *rows | 表示要插入到表中的一组数据。                                 |
278| Rdb_ConflictResolution resolution                        | 表示发生冲突时的解决策略。                                   |
279| int64_t *changes                                         | 输出参数,表示插入成功的次数。                               |
280
281**返回:**
282
283| 类型 | 说明                                                         |
284| ---- | ------------------------------------------------------------ |
285| int  | 返回执行结果。<br>返回RDB_OK表示成功。<br>返回RDB_E_ERROR表示数据库常见错误。<br>返回RDB_E_INVALID_ARGS表示无效参数。<br>返回RDB_E_ALREADY_CLOSED表示数据库已经关闭。<br>返回RDB_E_WAL_SIZE_OVER_LIMIT表示WAL日志文件大小超过默认值。<br>返回RDB_E_SQLITE_FULL表示SQLite错误码:数据库已满。<br>返回RDB_E_SQLITE_CORRUPT表示数据库损坏。<br>返回RDB_E_SQLITE_PERM表示SQLite错误码:访问权限被拒绝。<br>返回RDB_E_SQLITE_BUSY表示SQLite错误码:数据库文件被锁定。<br>返回RDB_E_SQLITE_LOCKED表示SQLite错误码:数据库中的表被锁定。<br>返回RDB_E_SQLITE_NOMEM表示SQLite错误码:数据库内存不足。<br>返回RDB_E_SQLITE_READONLY表示SQLite错误码:尝试写入只读数据库。<br>返回RDB_E_SQLITE_IOERR表示SQLite错误码:磁盘I/O错误。<br>返回RDB_E_SQLITE_TOO_BIG表示SQLite错误码:TEXT或BLOB超出大小限制。<br>返回RDB_E_SQLITE_MISMATCH表示SQLite错误码:数据类型不匹配。<br>返回RDB_E_SQLITE_CONSTRAINT表示SQLite错误码:SQLite约束。 |
286
287### OH_RdbTrans_Update()
288
289```
290int OH_RdbTrans_Update(OH_Rdb_Transaction *trans, const OH_VBucket *row, const OH_Predicates *predicates, int64_t *changes)
291```
292
293**描述**
294
295根据指定的条件更新数据库中的数据。
296
297**起始版本:** 18
298
299
300**参数:**
301
302| 参数项                                                   | 描述                                                         |
303| -------------------------------------------------------- | ------------------------------------------------------------ |
304| [OH_Rdb_Transaction](capi-rdb-oh-rdb-transaction.md) *trans  | 表示指向[OH_Rdb_Transaction](capi-rdb-oh-rdb-transaction.md)实例的指针。 |
305| const [OH_VBucket](capi-rdb-oh-vbucket.md) *row              | 表示要更新到表中的数据行。                                   |
306| const [OH_Predicates](capi-rdb-oh-predicates.md) *predicates | 表示[OH_Predicates](capi-rdb-oh-predicates.md)指定的更新条件。   |
307| int64_t *changes                                         | 输出参数,表示更新成功的次数。                               |
308
309**返回:**
310
311| 类型 | 说明                                                         |
312| ---- | ------------------------------------------------------------ |
313| int  | 返回执行结果。<br>返回RDB_OK表示成功。<br>返回RDB_E_ERROR表示数据库常见错误。<br>返回RDB_E_INVALID_ARGS表示无效参数。<br>返回RDB_E_ALREADY_CLOSED表示数据库已经关闭。<br>返回RDB_E_WAL_SIZE_OVER_LIMIT表示WAL日志文件大小超过默认值。<br>返回RDB_E_SQLITE_FULL表示SQLite错误码:数据库已满。<br>返回RDB_E_SQLITE_CORRUPT表示数据库损坏。<br>返回RDB_E_SQLITE_PERM表示SQLite错误码:访问权限被拒绝。<br>返回RDB_E_SQLITE_BUSY表示SQLite错误码:数据库文件被锁定。<br>返回RDB_E_SQLITE_LOCKED表示SQLite错误码:数据库中的表被锁定。<br>返回RDB_E_SQLITE_NOMEM表示SQLite错误码:数据库内存不足。<br>返回RDB_E_SQLITE_READONLY表示SQLite错误码:尝试写入只读数据库。<br>返回RDB_E_SQLITE_IOERR表示SQLite错误码:磁盘I/O错误。<br>返回RDB_E_SQLITE_TOO_BIG表示SQLite错误码:TEXT或BLOB超出大小限制。<br>返回RDB_E_SQLITE_MISMATCH表示SQLite错误码:数据类型不匹配。 |
314
315### OH_RdbTrans_UpdateWithConflictResolution()
316
317```
318int OH_RdbTrans_UpdateWithConflictResolution(OH_Rdb_Transaction *trans, const OH_VBucket *row,const OH_Predicates *predicates, Rdb_ConflictResolution resolution, int64_t *changes)
319```
320
321**描述**
322
323根据指定条件更新数据库中的数据,并支持冲突解决。
324
325**起始版本:** 20
326
327
328**参数:**
329
330| 参数项                                                   | 描述                                                         |
331| -------------------------------------------------------- | ------------------------------------------------------------ |
332| [OH_Rdb_Transaction](capi-rdb-oh-rdb-transaction.md) *trans  | 表示指向[OH_Rdb_Transaction](capi-rdb-oh-rdb-transaction.md)实例的指针。 |
333| const [OH_VBucket](capi-rdb-oh-vbucket.md) *row              | 表示要更新到表中的数据。                                     |
334| const [OH_Predicates](capi-rdb-oh-predicates.md) *predicates | 表示[OH_Predicates](capi-rdb-oh-predicates.md)指定的更新条件。   |
335| Rdb_ConflictResolution resolution                        | 表示发生冲突时的解决策略。                                   |
336| int64_t *changes                                         | 输出参数,表示更新成功的行数。                               |
337
338**返回:**
339
340| 类型 | 说明                                                         |
341| ---- | ------------------------------------------------------------ |
342| int  | 返回执行结果。<br>返回RDB_OK表示成功。<br>返回RDB_E_ERROR表示数据库常见错误。<br>返回RDB_E_INVALID_ARGS表示输入参数无效。<br>返回RDB_E_ALREADY_CLOSED表示数据库已关闭。<br>返回RDB_E_WAL_SIZE_OVER_LIMIT表示WAL日志文件大小超过默认值。<br>返回RDB_E_SQLITE_FULL表示SQLite错误码:数据库已满。<br>返回RDB_E_SQLITE_CORRUPT表示数据库损坏。<br>返回RDB_E_SQLITE_PERM表示SQLite错误码:访问权限被拒绝。<br>返回RDB_E_SQLITE_BUSY表示SQLite错误码:数据库文件被锁定。<br>返回RDB_E_SQLITE_LOCKED表示SQLite错误码:数据库中的表被锁定。<br>返回RDB_E_SQLITE_NOMEM表示SQLite错误码:数据库内存不足。<br>返回RDB_E_SQLITE_READONLY表示SQLite错误码:尝试写入只读数据库。<br>返回RDB_E_SQLITE_IOERR表示SQLite错误码:磁盘I/O错误。<br>返回RDB_E_SQLITE_TOO_BIG表示SQLite错误码:TEXT或BLOB超出大小限制。<br>返回RDB_E_SQLITE_MISMATCH表示SQLite错误码:数据类型不匹配。<br>返回RDB_E_SQLITE_CONSTRAINT表示SQLite错误码:违反约束导致操作中止。 |
343
344### OH_RdbTrans_Delete()
345
346```
347int OH_RdbTrans_Delete(OH_Rdb_Transaction *trans, const OH_Predicates *predicates, int64_t *changes)
348```
349
350**描述**
351
352根据指定条件从数据库中删除数据。
353
354**起始版本:** 18
355
356
357**参数:**
358
359| 参数项                                                   | 描述                                                         |
360| -------------------------------------------------------- | ------------------------------------------------------------ |
361| [OH_Rdb_Transaction](capi-rdb-oh-rdb-transaction.md) *trans  | 表示指向[OH_Rdb_Transaction](capi-rdb-oh-rdb-transaction.md)实例的指针。 |
362| const [OH_Predicates](capi-rdb-oh-predicates.md) *predicates | 表示[OH_Predicates](capi-rdb-oh-predicates.md)指定的删除条件。   |
363| int64_t *changes                                         | 表示删除成功的次数。                                         |
364
365**返回:**
366
367| 类型 | 说明                                                         |
368| ---- | ------------------------------------------------------------ |
369| int  | 返回执行结果。<br>返回RDB_OK表示成功。<br>返回RDB_E_ERROR表示数据库常见错误。<br>返回RDB_E_INVALID_ARGS表示无效参数。<br>返回RDB_E_ALREADY_CLOSED表示数据库已经关闭。<br>返回RDB_E_WAL_SIZE_OVER_LIMIT表示WAL日志文件大小超过默认值。<br>返回RDB_E_SQLITE_FULL表示SQLite错误码:数据库已满。<br>返回RDB_E_SQLITE_CORRUPT表示数据库损坏。<br>返回RDB_E_SQLITE_PERM表示SQLite错误码:访问权限被拒绝。<br>返回RDB_E_SQLITE_BUSY表示SQLite错误码:数据库文件被锁定。<br>返回RDB_E_SQLITE_LOCKED表示SQLite错误码:数据库中的表被锁定。<br>返回RDB_E_SQLITE_NOMEM表示SQLite错误码:数据库内存不足。<br>返回RDB_E_SQLITE_READONLY表示SQLite错误码:尝试写入只读数据库。<br>返回RDB_E_SQLITE_IOERR表示SQLite错误码:磁盘I/O错误。<br>返回RDB_E_SQLITE_TOO_BIG表示SQLite错误码:TEXT或BLOB超出大小限制。<br>返回RDB_E_SQLITE_MISMATCH表示SQLite错误码:数据类型不匹配。 |
370
371### OH_RdbTrans_Query()
372
373```
374OH_Cursor *OH_RdbTrans_Query(OH_Rdb_Transaction *trans, const OH_Predicates *predicates, const char *columns[], int len)
375```
376
377**描述**
378
379根据指定的条件查询数据库中的数据。
380
381**起始版本:** 18
382
383
384**参数:**
385
386| 参数项                                                   | 描述                                                         |
387| -------------------------------------------------------- | ------------------------------------------------------------ |
388| [OH_Rdb_Transaction](capi-rdb-oh-rdb-transaction.md) *trans  | 表示指向[OH_Rdb_Transaction](capi-rdb-oh-rdb-transaction.md)实例的指针。 |
389| const [OH_Predicates](capi-rdb-oh-predicates.md) *predicates | 表示[OH_Predicates](capi-rdb-oh-predicates.md)指定的查询条件。   |
390| const char *columns[]                       | 表示要查询的列,如果传入空值,则查询适用于所有列。           |
391| int len                                                  | 表示列中元素的个数。                                         |
392
393**返回:**
394
395| 类型                           | 说明                                                         |
396| ------------------------------ | ------------------------------------------------------------ |
397| [OH_Cursor](capi-rdb-oh-cursor.md) | 如果执行成功,则返回指向[OH_Cursor](capi-rdb-oh-cursor.md)实例的指针。如果数据库已关闭或数据库没有响应,则返回空。 |
398
399### OH_RdbTrans_QuerySql()
400
401```
402OH_Cursor *OH_RdbTrans_QuerySql(OH_Rdb_Transaction *trans, const char *sql, const OH_Data_Values *args)
403```
404
405**描述**
406
407根据SQL语句查询数据库中的数据。
408
409**起始版本:** 18
410
411
412**参数:**
413
414| 参数项                                                  | 描述                                                         |
415| ------------------------------------------------------- | ------------------------------------------------------------ |
416| [OH_Rdb_Transaction](capi-rdb-oh-rdb-transaction.md) *trans | 表示指向[OH_Rdb_Transaction](capi-rdb-oh-rdb-transaction.md)实例的指针。 |
417| const char *sql                                         | 表示要执行的SQL语句。                                        |
418| const [OH_Data_Values](capi-rdb-oh-data-values.md) *args    | 表示指向[OH_Data_Values](capi-rdb-oh-data-values.md)的指针。     |
419
420**返回:**
421
422| 类型                           | 说明                                                         |
423| ------------------------------ | ------------------------------------------------------------ |
424| [OH_Cursor](capi-rdb-oh-cursor.md) | 如果执行成功,则返回指向[OH_Cursor](capi-rdb-oh-cursor.md)实例的指针。如果数据库已关闭或数据库没有响应,则返回空。 |
425
426### OH_RdbTrans_Execute()
427
428```
429int OH_RdbTrans_Execute(OH_Rdb_Transaction *trans, const char *sql, const OH_Data_Values *args, OH_Data_Value **result)
430```
431
432**描述**
433
434执行包含指定参数的SQL语句。
435
436**起始版本:** 18
437
438
439**参数:**
440
441| 参数项                                                  | 描述                                                         |
442| ------------------------------------------------------- | ------------------------------------------------------------ |
443| [OH_Rdb_Transaction](capi-rdb-oh-rdb-transaction.md) *trans | 表示指向[OH_Rdb_Transaction](capi-rdb-oh-rdb-transaction.md)实例的指针。 |
444| const char *sql                                         | 表示要执行的SQL语句。                                        |
445| const [OH_Data_Values](capi-rdb-oh-data-values.md) *args    | SQL语句中包含的参数。                                        |
446| OH_Data_Value **result                                  | 执行成功时指向[OH_Data_Value](capi-rdb-oh-data-value.md)实例的指针。使用完成后,必须通过[OH_Value_Destroy](capi-oh-data-value-h.md#oh_value_destroy)接口释放内存。 |
447
448**返回:**
449
450| 类型 | 说明                                                         |
451| ---- | ------------------------------------------------------------ |
452| int  | 返回执行结果。<br>返回RDB_OK表示成功。<br>返回RDB_E_ERROR表示数据库常见错误。<br>返回RDB_E_INVALID_ARGS表示无效参数。<br>返回RDB_E_ALREADY_CLOSED表示数据库已经关闭。<br>返回RDB_E_WAL_SIZE_OVER_LIMIT表示WAL日志文件大小超过默认值。<br>返回RDB_E_SQLITE_FULL表示SQLite错误码:数据库已满。<br>返回RDB_E_SQLITE_CORRUPT表示数据库损坏。<br>返回RDB_E_SQLITE_PERM表示SQLite错误码:访问权限被拒绝。<br>返回RDB_E_SQLITE_BUSY表示SQLite错误码:数据库文件被锁定。<br>返回RDB_E_SQLITE_LOCKED表示SQLite错误码:数据库中的表被锁定。<br>返回RDB_E_SQLITE_NOMEM表示SQLite错误码:数据库内存不足。<br>返回RDB_E_SQLITE_READONLY表示SQLite错误码:尝试写入只读数据库。<br>返回RDB_E_SQLITE_IOERR表示SQLite错误码:磁盘I/O错误。<br>返回RDB_E_SQLITE_TOO_BIG表示SQLite错误码:TEXT或BLOB超出大小限制。<br>返回RDB_E_SQLITE_MISMATCH表示SQLite错误码:数据类型不匹配。 |
453
454### OH_RdbTrans_Destroy()
455
456```
457int OH_RdbTrans_Destroy(OH_Rdb_Transaction *trans)
458```
459
460**描述**
461
462销毁事务对象。
463
464**起始版本:** 18
465
466
467**参数:**
468
469| 参数项                                                  | 描述                                                         |
470| ------------------------------------------------------- | ------------------------------------------------------------ |
471| [OH_Rdb_Transaction](capi-rdb-oh-rdb-transaction.md) *trans | 表示指向[OH_Rdb_Transaction](capi-rdb-oh-rdb-transaction.md)实例的指针。 |
472
473**返回:**
474
475| 类型 | 说明                                                         |
476| ---- | ------------------------------------------------------------ |
477| int  | 返回错误码。<br>返回RDB_OK表示成功。<br>返回RDB_E_INVALID_ARGS表示无效参数。 |
478
479