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