可以调用relationalStore.getInsertSqlInfo获取用于插入数据的SQL语句。
可以调用relationalStore.getUpdateSqlInfo获取用于更新数据的SQL语句。
可以调用relationalStore.getDeleteSqlInfo获取用于删除数据的SQL语句。
可以调用relationalStore.getQuerySqlInfo获取用于查询数据的SQL语句。
当使用关系型数据库时,可能会生成不同的文件产物,不同的文件对应作用具体可见下表。
| 文件类型 | 说明 |
|---|---|
| .db | 数据库持久化文件,用于存储数据库数据。 |
| .db-wal | 用于保存操作日志,可以在事务失败时回滚更改,确保数据一致性。 该文件仅在数据库采用WAL模式时存在(系统默认日志方式即为WAL(Write Ahead Log)模式)。 |
| .db-shm | 共享内存文件,用于协调多个数据库连接对同一db文件的更改,防止数据冲突。 该文件仅在数据库采用WAL模式时存在(系统默认日志方式即为WAL(Write Ahead Log)模式)。 |
| .key_lock | 用于保存文件锁信息。 |
| .pub_key | 用于保存数据库密钥信息。 该文件仅在配置了数据库加密且未配置自定义加密参数时(即通过StoreConfig配置encrypt为true且未配置cryptoParam)存在。 |
| .db-dwr | 用于保存文件头信息。 |
| .db-compare | 用于保存所有DDL语句。 |
在关系型数据库中,调用getRdbStore()接口使用原始密钥打开加密库时,入参CryptoParam.encryptionKey需要按照如下操作配置:
import { relationalStore } from '@kit.ArkData'
import { buffer } from '@kit.ArkTS';
let password: string = "x'3605d7de19311edba4d3c88143c61cdd79dd5a58bc829c8b1234567891234567'"; // 需替换为实际的数据库原始密钥(64位十六进制字符串,对应32字节原始密钥)
let key = new Uint8Array(buffer.from(password, 'utf8').buffer); // 返回的是Uint8Array
// 配置加密参数
const cryptoParam: relationalStore.CryptoParam = {
encryptionKey: key, // 必填,指定密钥
};