更新记录
1.0.1(2026-06-08)
- 发布前收口版本,统一
package.json与诊断日志版本号为1.0.1。 - 修复 Harmony 运行包制作时 ArkTS 严格类型编译失败的问题。
- Harmony rdbStore 的
executeSql/querySql绑定参数统一转换为relationalStore.ValueType[],不再向原生 API 传入Array<any>/Object[]。 - 修复 Harmony 端调用
number.toDouble()导致的编译错误。 - 修复 Harmony 迁移版本读取中
UTSJSONObject动态索引触发arkts-no-any-unknown的问题,改为直接从ResultSet.getLong(0)读取。 - 复核 Harmony 迁移版本读取不再使用
UTSJSONObject动态索引,空参数和参数化 SQL 均使用relationalStore.ValueType[]。 - 补充 README 示例代码注释规范和回归守卫,所有文档示例代码块均包含说明注释。
- 完善发布文档体验:README 示例代码均包含中文注释,便于客户复制后理解调用顺序和平台边界。
- 优化演示组件按钮区域为一行三个,并为示例组件方法补齐用途注释。
- 修复 SQLite Pro 页面【快速上手】嵌套回调中
this.dbName丢失导致的运行时错误。
1.0.0(2026-06-08)
- 首版新增
lizhao-sqlite-pro纯 UTS SQLite Pro 插件。 - Android 使用系统
android.database.sqlite.SQLiteDatabase实现真实 SQLite 打开、关闭、执行、查询、事务、参数化 SQL、批处理、迁移和备份恢复。 - iOS 使用系统
SQLite3C API 实现真实 SQLite 打开、关闭、执行、查询、事务、参数化 SQL、批处理、迁移和备份恢复。 - Harmony 使用系统
@ohos.data.relationalStore/ rdbStore 实现真实关系型数据库打开、关闭、执行、查询、事务、参数化 SQL、批处理、迁移和备份恢复。 - Web、微信小程序、支付宝小程序提供 SQL 子集降级,并通过能力矩阵明确不等同完整原生 SQLite。
- 新增演示组件、示例页、诊断日志和结构守卫脚本。
平台兼容性
uni-app(5.07)
| Vue2 | Vue3 | Chrome | Safari | app-vue | app-nvue | Android | iOS | 鸿蒙 |
|---|---|---|---|---|---|---|---|---|
| √ | √ | √ | √ | √ | √ | √ | √ | √ |
| 微信小程序 | 支付宝小程序 | 抖音小程序 | 百度小程序 | 快手小程序 | 京东小程序 | 鸿蒙元服务 | QQ小程序 | 飞书小程序 | 小红书小程序 | 快应用-华为 | 快应用-联盟 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| √ | √ | - | - | - | - | - | - | - | - | - | - |
uni-app x(5.07)
| Chrome | Safari | Android | iOS | 鸿蒙 | 微信小程序 |
|---|---|---|---|---|---|
| √ | √ | √ | √ | √ | √ |
lizhao-sqlite-pro
lizhao-sqlite-pro 是纯 UTS SQLite Pro 数据库插件,面向 uni-app / uni-app x。插件兼容 plus.sqlite 风格 API,并扩展参数化 SQL、批处理、迁移、备份恢复、导入导出、能力矩阵和诊断日志。
支持平台
| 平台 | 是否支持 | 说明 |
|---|---|---|
| Android | 支持 | 使用系统 android.database.sqlite.SQLiteDatabase,需要原生联编或自定义基座后验证 |
| iOS | 支持 | 使用系统 SQLite3 C API,数据库保存在 Documents/lizhao-sqlite-pro |
| Harmony | 支持 | 使用系统 @ohos.data.relationalStore / rdbStore,数据库保存在应用数据库目录 |
| Web | 降级支持 | 使用内存 SQL 子集降级,非完整 SQLite |
| 微信小程序 | 降级支持 | 使用内存 SQL 子集降级,非完整 SQLite |
| 支付宝小程序 | 降级支持 | 使用内存 SQL 子集降级,非完整 SQLite |
安装与引入
页面和业务代码只能从插件根目录导入,不要直接引用 utssdk 内部文件。
// 从插件根目录统一导入公开 API,不要直接引用 utssdk 内部文件。
import {
openDatabase,
isOpenDatabase,
closeDatabase,
transaction,
executeSql,
selectSql,
getDatabasePath,
executePrepared,
batch,
runMigrations,
backupDatabase,
restoreDatabase,
exportDatabase,
importDatabase,
getCapabilities,
getDiagnostics,
clearDiagnostics
} from '@/uni_modules/lizhao-sqlite-pro'
自定义基座说明
| 场景 | 是否需要自定义基座 | 说明 |
|---|---|---|
| Android 使用当前版本 | 需要重新原生联编 | 修改了 utssdk/app-android/index.uts,wgt 不能热更新已编译的原生 UTS |
| Android 新增三方依赖 | 需要 | 若后续新增 jar/aar/so、Manifest、res、assets 或 Gradle 配置,必须重打 |
| iOS 使用当前版本 | 需要重新原生联编 | 修改了 utssdk/app-ios/index.uts 并链接 libsqlite3.tbd,需要重新 iOS 原生联编或自定义基座 |
| Harmony 使用当前版本 | 需要重新原生联编 | 修改了 utssdk/app-harmony/index.uts 并调用系统 rdbStore,需要重新 Harmony 原生联编 |
| Web/小程序 | 不需要 | 使用脚本降级实现 |
API 列表
| 函数名 | 说明 | 参数 |
|---|---|---|
openDatabase |
打开数据库 | DatabaseOptions |
isOpenDatabase |
判断数据库是否打开 | DatabaseOptions |
closeDatabase |
关闭数据库 | DatabaseOptions |
transaction |
执行事务 | SqlTransactionOptions |
executeSql |
执行增删改 SQL | SqlOperationOptions |
selectSql |
执行查询 SQL | SqlOperationOptions |
getDatabasePath |
获取数据库路径 | name: string |
executePrepared |
执行参数化 SQL | PreparedSqlOptions |
batch |
批处理 SQL | BatchSqlOptions |
runMigrations |
执行迁移 | MigrationOptions |
backupDatabase |
备份数据库 | DatabaseFileOptions |
restoreDatabase |
恢复数据库 | DatabaseFileOptions |
exportDatabase |
导出数据库 | DatabaseTransferOptions |
importDatabase |
导入数据库 | DatabaseTransferOptions |
getCapabilities |
获取能力矩阵 | 无 |
getDiagnostics |
获取诊断日志 | GetDiagnosticsOptions |
clearDiagnostics |
清空诊断日志 | 无 |
快速上手示例
下面示例展示最常用的打开数据库、建表、参数化写入和查询流程。页面和业务代码仍然只从插件根目录导入。
// 快速上手:打开数据库 -> 建表 -> 参数化写入 -> 查询结果。
import {
openDatabase,
executeSql,
executePrepared,
selectSql
} from '@/uni_modules/lizhao-sqlite-pro'
const dbName = 'demo'
// 打开或创建演示数据库。
openDatabase({
name: dbName,
success() {
// 数据库打开后创建用户表。
executeSql({
name: dbName,
sql: 'CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, age INTEGER)',
success() {
// 使用 ? 占位符写入数据,避免 SQL 字符串拼接。
executePrepared({
name: dbName,
sql: 'INSERT INTO users (name, age) VALUES (?, ?)',
params: ['Alice', 30],
success() {
// 写入成功后查询全部用户数据。
selectSql({
name: dbName,
sql: 'SELECT * FROM users',
success(rows) {
console.log('查询结果', rows)
},
fail(err) {
console.log('查询失败', err)
}
})
},
fail(err) {
console.log('写入失败', err)
}
})
},
fail(err) {
console.log('建表失败', err)
}
})
},
fail(err) {
console.log('打开数据库失败', err)
}
})
openDatabase(options)
说明 打开或创建数据库。
参数
| 参数 | 类型 | 必填 | 说明 | 默认值 | 可选参数 |
|---|---|---|---|---|---|
| options | DatabaseOptions | 是 | 数据库打开参数 | 无 | name / path / success / fail / complete |
| options.name | string | 是 | 数据库名称 | 无 | 无 |
| options.path | string | 否 | 数据库路径 | App 应用沙盒路径 | 无 |
| options.success | function | 否 | 打开成功回调 | 无 | 无 |
| options.fail | function | 否 | 打开失败回调 | 无 | 无 |
| options.complete | function | 否 | 完成回调 | 无 | 无 |
返回值
| 字段 | 类型 | 说明 |
|---|---|---|
| name | string | 数据库名称 |
| path | string | 数据库路径 |
| opened | boolean | 当前是否打开 |
示例
// 打开或创建 demo 数据库。
openDatabase({
name: 'demo',
success(res) {
console.log('打开成功', res)
},
fail(err) {
console.log('打开失败', err)
},
complete(res) {
console.log('打开完成', res)
}
})
isOpenDatabase(options)
说明
判断数据库是否已经打开,同时会触发 success / complete 返回当前状态。
参数
| 参数 | 类型 | 必填 | 说明 | 默认值 | 可选参数 |
|---|---|---|---|---|---|
| options | DatabaseOptions | 是 | 数据库状态参数 | 无 | name / success / fail / complete |
| options.name | string | 是 | 数据库名称 | 无 | 无 |
| options.success | function | 否 | 状态查询成功回调 | 无 | 无 |
| options.fail | function | 否 | 状态查询失败回调 | 无 | 无 |
| options.complete | function | 否 | 完成回调 | 无 | 无 |
返回值
| 字段 | 类型 | 说明 |
|---|---|---|
| return | boolean | 数据库是否打开 |
| name | string | 回调中的数据库名称 |
| path | string | 回调中的数据库路径 |
| opened | boolean | 回调中的打开状态 |
示例
// 同步返回 opened,同时通过 success / complete 拿到状态对象。
const opened = isOpenDatabase({
name: 'demo',
success(res) {
console.log('状态查询成功', res)
},
complete(res) {
console.log('状态查询完成', res)
}
})
console.log('当前是否打开', opened)
closeDatabase(options)
说明 关闭已打开的数据库。
参数
| 参数 | 类型 | 必填 | 说明 | 默认值 | 可选参数 |
|---|---|---|---|---|---|
| options | DatabaseOptions | 是 | 数据库关闭参数 | 无 | name / success / fail / complete |
| options.name | string | 是 | 数据库名称 | 无 | 无 |
| options.success | function | 否 | 关闭成功回调 | 无 | 无 |
| options.fail | function | 否 | 关闭失败回调 | 无 | 无 |
| options.complete | function | 否 | 完成回调 | 无 | 无 |
返回值
| 字段 | 类型 | 说明 |
|---|---|---|
| name | string | 数据库名称 |
| path | string | 数据库路径 |
| opened | boolean | 关闭后为 false |
示例
// 关闭已经打开的 demo 数据库。
closeDatabase({
name: 'demo',
success(res) {
console.log('关闭成功', res)
},
fail(err) {
console.log('关闭失败', err)
}
})
transaction(options)
说明
执行事务控制。begin 开启事务,commit 提交事务,rollback 回滚事务。
参数
| 参数 | 类型 | 必填 | 说明 | 默认值 | 可选参数 |
|---|---|---|---|---|---|
| options | SqlTransactionOptions | 是 | 事务参数 | 无 | name / operation / success / fail / complete |
| options.name | string | 是 | 数据库名称 | 无 | 无 |
| options.operation | string | 是 | 事务操作 | 无 | begin / commit / rollback |
| options.success | function | 否 | 事务操作成功回调 | 无 | 无 |
| options.fail | function | 否 | 事务操作失败回调 | 无 | 无 |
| options.complete | function | 否 | 完成回调 | 无 | 无 |
返回值
| 字段 | 类型 | 说明 |
|---|---|---|
| name | string | 数据库名称 |
| affectedRows | number | 事务控制语句影响行数,通常为 0 |
| insertId | number | 最近插入 ID,事务控制通常为 0 |
| statementCount | number | 执行语句数量 |
| lastSql | string | 最近执行的事务操作 |
示例
// 开启事务;提交和回滚时把 operation 改为 commit 或 rollback。
transaction({
name: 'demo',
operation: 'begin',
success(res) {
console.log('事务开启成功', res)
},
fail(err) {
console.log('事务开启失败', err)
}
})
executeSql(options)
说明 执行建表、插入、更新、删除等非查询 SQL。多条 SQL 请传数组。
参数
| 参数 | 类型 | 必填 | 说明 | 默认值 | 可选参数 |
|---|---|---|---|---|---|
| options | SqlOperationOptions | 是 | SQL 执行参数 | 无 | name / sql / success / fail / complete |
| options.name | string | 是 | 数据库名称 | 无 | 无 |
| options.sql | string | Array |
是 | SQL 字符串或 SQL 数组 | 无 | 无 |
| options.success | function | 否 | 执行成功回调 | 无 | 无 |
| options.fail | function | 否 | 执行失败回调 | 无 | 无 |
| options.complete | function | 否 | 完成回调 | 无 | 无 |
返回值
| 字段 | 类型 | 说明 |
|---|---|---|
| name | string | 数据库名称 |
| affectedRows | number | 影响行数 |
| insertId | number | 最近插入 ID |
| statementCount | number | 执行语句数量 |
| lastSql | string | 最后一条 SQL |
示例
// 执行建表和清理数据,多条 SQL 可以使用数组。
executeSql({
name: 'demo',
sql: [
'CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, age INTEGER)',
'DELETE FROM users'
],
success(res) {
console.log('SQL 执行成功', res)
},
fail(err) {
console.log('SQL 执行失败', err)
}
})
selectSql(options)
说明 执行查询 SQL,成功回调返回行数组。
参数
| 参数 | 类型 | 必填 | 说明 | 默认值 | 可选参数 |
|---|---|---|---|---|---|
| options | SqlOperationOptions | 是 | 查询参数 | 无 | name / sql / success / fail / complete |
| options.name | string | 是 | 数据库名称 | 无 | 无 |
| options.sql | string | 是 | 查询 SQL | 无 | 无 |
| options.success | function | 否 | 查询成功回调 | 无 | 无 |
| options.fail | function | 否 | 查询失败回调 | 无 | 无 |
| options.complete | function | 否 | 完成回调 | 无 | 无 |
返回值
| 字段 | 类型 | 说明 |
|---|---|---|
| rows | Array<object> | 成功回调参数为查询结果数组 |
示例
// 执行普通查询 SQL,success 回调参数是结果行数组。
selectSql({
name: 'demo',
sql: 'SELECT * FROM users ORDER BY id DESC',
success(rows) {
console.log('查询结果', rows)
},
fail(err) {
console.log('查询失败', err)
}
})
getDatabasePath(name)
说明 获取当前平台的数据库路径。App 端返回沙盒内真实路径,Web/小程序返回降级标识路径。
参数
| 参数 | 类型 | 必填 | 说明 | 默认值 | 可选参数 |
|---|---|---|---|---|---|
| name | string | 是 | 数据库名称 | 无 | 无 |
返回值
| 字段 | 类型 | 说明 |
|---|---|---|
| return | string | 数据库路径或降级标识路径 |
示例
// 获取当前平台下 demo 数据库的实际路径或降级标识路径。
const path = getDatabasePath('demo')
console.log('数据库路径', path)
executePrepared(options)
说明
执行带 ? 占位符的参数化 SQL,用于避免字符串拼接带来的 SQL 注入风险。
参数
| 参数 | 类型 | 必填 | 说明 | 默认值 | 可选参数 |
|---|---|---|---|---|---|
| options | PreparedSqlOptions | 是 | 参数化 SQL 参数 | 无 | name / sql / params / query / success / fail / complete |
| options.name | string | 是 | 数据库名称 | 无 | 无 |
| options.sql | string | 是 | 包含 ? 占位符的 SQL |
无 | 无 |
| options.params | Array |
否 | 绑定参数,按占位符顺序绑定 | [] |
无 |
| options.query | boolean | 否 | 是否按查询执行 | false |
true / false |
| options.success | function | 否 | 成功回调,查询返回行数组,非查询返回执行摘要 | 无 | 无 |
| options.fail | function | 否 | 失败回调 | 无 | 无 |
| options.complete | function | 否 | 完成回调 | 无 | 无 |
返回值
| 字段 | 类型 | 说明 |
|---|---|---|
| rows | Array<object> | query=true 时成功回调参数为行数组 |
| name | string | query=false 时返回数据库名称 |
| affectedRows | number | query=false 时返回影响行数 |
| insertId | number | query=false 时返回最近插入 ID |
示例
// 使用 ? 占位符做参数化写入,避免 SQL 注入风险。
executePrepared({
name: 'demo',
sql: 'INSERT INTO users (name, age) VALUES (?, ?)',
params: ['Alice', 30],
query: false,
success(res) {
console.log('参数化写入成功', res)
},
fail(err) {
console.log('参数化写入失败', err)
}
})
batch(options)
说明
批量执行 SQL,可选择事务包裹和失败回滚。每个条目都支持 ? 参数。
参数
| 参数 | 类型 | 必填 | 说明 | 默认值 | 可选参数 |
|---|---|---|---|---|---|
| options | BatchSqlOptions | 是 | 批处理参数 | 无 | name / items / transaction / rollbackOnFail / success / fail / complete |
| options.name | string | 是 | 数据库名称 | 无 | 无 |
| options.items | Array |
是 | SQL 条目列表 | 无 | 无 |
| options.items[].sql | string | 是 | SQL 语句 | 无 | 无 |
| options.items[].params | Array |
否 | 参数数组 | [] |
无 |
| options.items[].query | boolean | 否 | 是否按查询执行 | false |
true / false |
| options.transaction | boolean | 否 | 是否用事务包裹 | true |
true / false |
| options.rollbackOnFail | boolean | 否 | 失败时是否回滚 | true |
true / false |
| options.success | function | 否 | 执行成功回调 | 无 | 无 |
| options.fail | function | 否 | 执行失败回调 | 无 | 无 |
| options.complete | function | 否 | 完成回调 | 无 | 无 |
返回值
| 字段 | 类型 | 说明 |
|---|---|---|
| name | string | 数据库名称 |
| count | number | 执行条目数量 |
| results | Array |
每条 SQL 的结果 |
示例
// 使用事务批量执行多条参数化 SQL,失败时自动回滚。
batch({
name: 'demo',
transaction: true,
rollbackOnFail: true,
items: [
{ sql: 'INSERT INTO users (name, age) VALUES (?, ?)', params: ['Bob', 25] },
{ sql: 'INSERT INTO users (name, age) VALUES (?, ?)', params: ['Charlie', 35] }
],
success(res) {
console.log('批处理成功', res)
},
fail(err) {
console.log('批处理失败', err)
}
})
runMigrations(options)
说明 按版本顺序执行迁移脚本,并把已执行版本记录到迁移表中。
参数
| 参数 | 类型 | 必填 | 说明 | 默认值 | 可选参数 |
|---|---|---|---|---|---|
| options | MigrationOptions | 是 | 迁移参数 | 无 | name / migrations / tableName / success / fail / complete |
| options.name | string | 是 | 数据库名称 | 无 | 无 |
| options.migrations | Array |
是 | 迁移脚本列表 | 无 | 无 |
| options.migrations[].version | number | 是 | 目标版本号,必须大于 0 | 无 | 无 |
| options.migrations[].name | string | 否 | 版本说明 | 无 | 无 |
| options.migrations[].sql | Array |
是 | 当前版本要执行的 SQL 列表 | 无 | 无 |
| options.tableName | string | 否 | 迁移记录表名 | lizhao_sqlite_schema_migrations |
无 |
| options.success | function | 否 | 迁移成功回调 | 无 | 无 |
| options.fail | function | 否 | 迁移失败回调 | 无 | 无 |
| options.complete | function | 否 | 完成回调 | 无 | 无 |
返回值
| 字段 | 类型 | 说明 |
|---|---|---|
| name | string | 数据库名称 |
| fromVersion | number | 迁移前版本 |
| toVersion | number | 迁移后版本 |
| appliedVersions | Array |
本次执行的版本列表 |
示例
// 按版本顺序执行迁移脚本,已执行版本会被记录。
runMigrations({
name: 'demo',
migrations: [
{
version: 1,
name: 'create-settings',
sql: ['CREATE TABLE IF NOT EXISTS settings (key TEXT PRIMARY KEY, value TEXT)']
},
{
version: 2,
name: 'seed-settings',
sql: ["INSERT OR REPLACE INTO settings (key, value) VALUES ('demo_version', '2')"]
}
],
success(res) {
console.log('迁移成功', res)
},
fail(err) {
console.log('迁移失败', err)
}
})
backupDatabase(options)
说明 备份数据库文件。App 原生平台需要传入应用可访问的目标路径;Web/小程序降级平台没有真实数据库文件,会触发失败回调。
参数
| 参数 | 类型 | 必填 | 说明 | 默认值 | 可选参数 |
|---|---|---|---|---|---|
| options | DatabaseFileOptions | 是 | 备份参数 | 无 | name / path / success / fail / complete |
| options.name | string | 是 | 数据库名称 | 无 | 无 |
| options.path | string | 是 | 备份目标文件路径 | 无 | 无 |
| options.success | function | 否 | 备份成功回调 | 无 | 无 |
| options.fail | function | 否 | 备份失败回调 | 无 | 无 |
| options.complete | function | 否 | 完成回调 | 无 | 无 |
返回值
| 字段 | 类型 | 说明 |
|---|---|---|
| name | string | 数据库名称 |
| sourcePath | string | 源数据库路径 |
| targetPath | string | 目标备份路径 |
| success | boolean | 是否成功 |
示例
// 备份 demo 数据库到同目录 .bak 文件。
backupDatabase({
name: 'demo',
path: getDatabasePath('demo') + '.bak',
success(res) {
console.log('备份成功', res)
},
fail(err) {
console.log('备份失败', err)
}
})
restoreDatabase(options)
说明 从备份文件恢复数据库。部分平台恢复时会关闭当前连接,再替换数据库文件。
参数
| 参数 | 类型 | 必填 | 说明 | 默认值 | 可选参数 |
|---|---|---|---|---|---|
| options | DatabaseFileOptions | 是 | 恢复参数 | 无 | name / path / success / fail / complete |
| options.name | string | 是 | 数据库名称 | 无 | 无 |
| options.path | string | 是 | 备份源文件路径 | 无 | 无 |
| options.success | function | 否 | 恢复成功回调 | 无 | 无 |
| options.fail | function | 否 | 恢复失败回调 | 无 | 无 |
| options.complete | function | 否 | 完成回调 | 无 | 无 |
返回值
| 字段 | 类型 | 说明 |
|---|---|---|
| name | string | 数据库名称 |
| sourcePath | string | 备份源路径 |
| targetPath | string | 恢复目标路径 |
| success | boolean | 是否成功 |
示例
// 从 .bak 备份文件恢复 demo 数据库。
restoreDatabase({
name: 'demo',
path: getDatabasePath('demo') + '.bak',
success(res) {
console.log('恢复成功', res)
},
fail(err) {
console.log('恢复失败', err)
}
})
exportDatabase(options)
说明 导出数据库内容摘要。当前首版 App 端返回数据库路径和导出元数据;降级平台返回内存表快照摘要。
参数
| 参数 | 类型 | 必填 | 说明 | 默认值 | 可选参数 |
|---|---|---|---|---|---|
| options | DatabaseTransferOptions | 是 | 导出参数 | 无 | name / path / data / success / fail / complete |
| options.name | string | 是 | 数据库名称 | 无 | 无 |
| options.path | string | 否 | 可选目标路径,当前首版主要返回数据库路径和元数据 | 无 | 无 |
| options.data | string | 否 | 可选导出内容,导出时通常不用传 | 无 | 无 |
| options.success | function | 否 | 导出成功回调 | 无 | 无 |
| options.fail | function | 否 | 导出失败回调 | 无 | 无 |
| options.complete | function | 否 | 完成回调 | 无 | 无 |
返回值
| 字段 | 类型 | 说明 |
|---|---|---|
| name | string | 数据库名称 |
| path | string | 数据库路径或导出路径 |
| data | string | 导出 JSON 文本或摘要 |
| tableCount | number | 导出表数量,首版 App 端可能为 0 |
示例
// 导出数据库摘要或文件信息,具体能力以平台能力矩阵为准。
exportDatabase({
name: 'demo',
success(res) {
console.log('导出成功', res)
},
fail(err) {
console.log('导出失败', err)
}
})
importDatabase(options)
说明
导入数据库。iOS/Harmony 支持通过 path 导入数据库文件;Android 首版建议使用 restoreDatabase({ name, path }) 完成文件恢复;Web/小程序降级平台会明确失败。
参数
| 参数 | 类型 | 必填 | 说明 | 默认值 | 可选参数 |
|---|---|---|---|---|---|
| options | DatabaseTransferOptions | 是 | 导入参数 | 无 | name / path / data / success / fail / complete |
| options.name | string | 是 | 数据库名称 | 无 | 无 |
| options.path | string | 否 | 导入源文件路径 | 无 | 无 |
| options.data | string | 否 | 导入 JSON 文本,首版主要用于扩展占位 | 无 | 无 |
| options.success | function | 否 | 导入成功回调 | 无 | 无 |
| options.fail | function | 否 | 导入失败回调 | 无 | 无 |
| options.complete | function | 否 | 完成回调 | 无 | 无 |
返回值
| 字段 | 类型 | 说明 |
|---|---|---|
| name | string | 数据库名称 |
| path | string | 导入后的数据库路径 |
| data | string | 导入摘要 |
| tableCount | number | 导入表数量,首版可能为 0 |
示例
// 从备份路径或数据载荷导入数据库,降级端会明确失败。
importDatabase({
name: 'demo',
path: getDatabasePath('demo') + '.bak',
data: '',
success(res) {
console.log('导入成功', res)
},
fail(err) {
console.log('导入失败或平台暂不支持', err)
}
})
getCapabilities()
说明 获取当前平台能力矩阵,用于区分 App 原生 SQLite、Web/小程序降级 SQL 子集和自定义基座要求。
参数
| 参数 | 类型 | 必填 | 说明 | 默认值 | 可选参数 |
|---|---|---|---|---|---|
| 无 | 无 | 否 | 该方法不接收参数 | 无 | 无 |
返回值
| 字段 | 类型 | 说明 |
|---|---|---|
| supported | boolean | 当前平台是否提供可用能力 |
| platform | string | 平台标识 |
| adapter | string | 底层适配器 |
| nativeSqlite | boolean | 是否为原生 SQLite 文件数据库 |
| persistent | boolean | 是否持久化 |
| parameterized | boolean | 是否支持参数化 SQL |
| transaction | boolean | 是否支持事务 |
| migration | boolean | 是否支持迁移 |
| backupRestore | boolean | 是否支持备份恢复 |
| importExport | boolean | 是否支持导入导出 |
| diagnostics | boolean | 是否支持诊断 |
| requiresCustomBase | boolean | 是否需要自定义基座或原生联编 |
| reason | string | 降级或限制原因 |
示例
// 读取当前平台能力矩阵,用于判断是否为原生 SQLite。
const capabilities = getCapabilities()
console.log('能力矩阵', capabilities)
getDiagnostics(options)
说明 获取中文诊断快照,包括插件版本、平台适配器、已打开数据库和最近日志。
参数
| 参数 | 类型 | 必填 | 说明 | 默认值 | 可选参数 |
|---|---|---|---|---|---|
| options | GetDiagnosticsOptions | 否 | 诊断参数 | { includeLogs: true } |
includeLogs / success / fail / complete |
| options.includeLogs | boolean | 否 | 是否返回最近诊断明细 | true |
true / false |
| options.success | function | 否 | 保留字段,当前同步返回诊断结果 | 无 | 无 |
| options.fail | function | 否 | 保留字段 | 无 | 无 |
| options.complete | function | 否 | 保留字段 | 无 | 无 |
返回值
| 字段 | 类型 | 说明 |
|---|---|---|
| plugin | string | 插件名 |
| version | string | 插件版本 |
| platform | string | 平台标识 |
| adapter | string | 底层适配器 |
| openedDatabases | Array |
当前已打开数据库名 |
| logs | Array |
最近诊断日志 |
示例
// 读取诊断快照,includeLogs=true 会返回最近诊断日志。
const diagnostics = getDiagnostics({ includeLogs: true })
console.log('诊断日志', diagnostics)
clearDiagnostics()
说明 清空插件内部诊断日志。
参数
| 参数 | 类型 | 必填 | 说明 | 默认值 | 可选参数 |
|---|---|---|---|---|---|
| 无 | 无 | 否 | 该方法不接收参数 | 无 | 无 |
返回值
| 字段 | 类型 | 说明 |
|---|---|---|
| return | void | 无返回值 |
示例
// 清空插件内部诊断日志。
clearDiagnostics()
console.log('诊断日志已清空')
完整功能演示
下面示例覆盖插件全部公开 API,适合作为项目接入后的回归演示。Web/小程序会按能力矩阵降级;备份恢复和部分导入能力在降级平台会触发 fail / complete,不会伪造成功。
// 完整回归示例:覆盖兼容 API、增强 API、迁移、备份恢复和诊断日志。
import {
openDatabase,
isOpenDatabase,
closeDatabase,
transaction,
executeSql,
selectSql,
getDatabasePath,
executePrepared,
batch,
runMigrations,
backupDatabase,
restoreDatabase,
exportDatabase,
importDatabase,
getCapabilities,
getDiagnostics,
clearDiagnostics
} from '@/uni_modules/lizhao-sqlite-pro'
const dbName = 'lizhao_sqlite_pro_demo'
const dbPath = getDatabasePath(dbName)
const backupPath = dbPath + '.bak'
// 统一打印示例日志,方便在控制台筛选插件输出。
function logResult(label: string, value: any) {
console.log('[lizhao-sqlite-pro]', label, value)
}
// 统一包装 success / fail / complete,确保示例保留真实回调路径。
function callSqlite(label: string, options: any, invoke: (opts: any) => void): Promise<any> {
return new Promise((resolve) => {
let settled = false
// 只用 success/fail 决定 Promise 结果,complete 仅记录日志。
const done = (ok: boolean, payload: any) => {
if (settled) return
settled = true
resolve({ ok, payload })
}
invoke({
...options,
success(res: any) {
logResult(label + ' success', res)
done(true, res)
},
fail(err: any) {
logResult(label + ' fail', err)
done(false, err)
},
complete(res: any) {
logResult(label + ' complete', res)
}
})
})
}
// 一键运行全部核心能力,适合作为接入后的回归脚本。
export async function runLizhaoSqliteProDemo() {
// 先清空旧诊断,避免历史日志干扰本次演示。
clearDiagnostics()
logResult('getCapabilities', getCapabilities())
logResult('getDatabasePath', dbPath)
// 打开数据库后再执行建表、写入和查询。
const opened = await callSqlite('openDatabase', { name: dbName }, openDatabase)
const openStatus = isOpenDatabase({
name: dbName,
success(res) {
logResult('isOpenDatabase success', res)
},
complete(res) {
logResult('isOpenDatabase complete', res)
}
})
logResult('isOpenDatabase return', openStatus)
if (!opened.ok) return
// 初始化演示表,并清理上一次运行留下的数据。
await callSqlite('executeSql create', {
name: dbName,
sql: [
'CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, age INTEGER)',
'CREATE TABLE IF NOT EXISTS audit_logs (id INTEGER PRIMARY KEY AUTOINCREMENT, action TEXT, created_at INTEGER)',
'DELETE FROM users',
'DELETE FROM audit_logs'
]
}, executeSql)
// 手动演示事务 begin -> 参数化写入 -> commit/rollback。
await callSqlite('transaction begin', { name: dbName, operation: 'begin' }, transaction)
const insertResult = await callSqlite('executePrepared insert', {
name: dbName,
sql: 'INSERT INTO users (name, age) VALUES (?, ?)',
params: ['Alice', 30],
query: false
}, executePrepared)
await callSqlite(insertResult.ok ? 'transaction commit' : 'transaction rollback', {
name: dbName,
operation: insertResult.ok ? 'commit' : 'rollback'
}, transaction)
// 批处理会在事务中连续执行多条参数化 SQL。
await callSqlite('batch', {
name: dbName,
transaction: true,
rollbackOnFail: true,
items: [
{ sql: 'INSERT INTO users (name, age) VALUES (?, ?)', params: ['Bob', 25] },
{ sql: 'INSERT INTO users (name, age) VALUES (?, ?)', params: ['Charlie', 35] },
{ sql: 'INSERT INTO audit_logs (action, created_at) VALUES (?, ?)', params: ['batch-insert', Date.now()] }
]
}, batch)
// 迁移脚本会按版本记录,重复执行不会重复应用旧版本。
await callSqlite('runMigrations', {
name: dbName,
migrations: [
{
version: 1,
name: 'create-settings',
sql: ['CREATE TABLE IF NOT EXISTS settings (key TEXT PRIMARY KEY, value TEXT)']
},
{
version: 2,
name: 'seed-settings',
sql: ["INSERT OR REPLACE INTO settings (key, value) VALUES ('demo_version', '2')"]
}
]
}, runMigrations)
// 分别验证参数化查询和普通 selectSql 查询。
await callSqlite('executePrepared query', {
name: dbName,
sql: 'SELECT * FROM users WHERE age >= ?',
params: [25],
query: true
}, executePrepared)
await callSqlite('selectSql', {
name: dbName,
sql: 'SELECT * FROM users'
}, selectSql)
// App 原生端可验证文件备份恢复,降级端会进入 fail/complete。
await callSqlite('exportDatabase', { name: dbName }, exportDatabase)
await callSqlite('backupDatabase', { name: dbName, path: backupPath }, backupDatabase)
await callSqlite('restoreDatabase', { name: dbName, path: backupPath }, restoreDatabase)
await callSqlite('importDatabase', { name: dbName, path: backupPath, data: '' }, importDatabase)
// 演示结束前输出诊断,再清空诊断并关闭数据库。
logResult('getDiagnostics', getDiagnostics({ includeLogs: true }))
clearDiagnostics()
await callSqlite('closeDatabase', { name: dbName }, closeDatabase)
}
错误码
| 错误码 | 含义 | 说明 |
|---|---|---|
| 9040001 | platform unsupported | 当前平台不支持完整 SQLite 能力 |
| 9040002 | invalid params | 参数不合法 |
| 9040003 | context unavailable | 运行时上下文不可用 |
| 9040004 | database not open | 数据库未打开 |
| 9040005 | database already open | 数据库已经打开 |
| 9040006 | open failed | 打开数据库失败 |
| 9040007 | close failed | 关闭数据库失败 |
| 9040008 | execute failed | SQL 执行失败 |
| 9040009 | query failed | 查询执行失败 |
| 9040010 | transaction failed | 事务执行失败 |
| 9040011 | migration failed | 迁移执行失败 |
| 9040012 | file operation failed | 文件操作失败 |
| 9040013 | fallback unsupported sql | 降级存储不支持该 SQL |
演示组件
<template>
<!-- 在页面中直接使用插件演示组件。 -->
<lizhao-sqlite-pro />
</template>
组件路径:uni_modules/lizhao-sqlite-pro/components/lizhao-sqlite-pro/lizhao-sqlite-pro.vue
注意事项
- App 端 SQL 语句不要用分号拼接多条命令,多条命令请传数组或使用
batch。 - Web/小程序降级能力只适合演示、轻量缓存和接口连通性测试,不可当作完整 SQLite 文件数据库。
- 受限平台或受限 SQL 会进入
fail / complete;插件承诺不伪造成功,也不会把降级结果宣传为完整 SQLite。 - Android 首版
importDatabase会提示使用restoreDatabase({ name, path })做文件恢复;iOS/Harmony 支持通过path导入数据库文件。 exportDatabase首版主要返回数据库路径和元数据摘要,表级 JSON 完整导出可在后续版本扩展。- Harmony 使用 rdbStore 原生关系型数据库,
backupDatabase/restoreDatabase走 rdbStore 自带备份恢复;如需跨应用任意路径导入导出,请先用平台文件能力把文件放到应用可访问路径。

收藏人数:
购买源码授权版(
试用
赞赏(0)
下载 6483
赞赏 5
下载 12207353
赞赏 1918
赞赏
京公网安备:11010802035340号