更新记录
1.1.4(2026-09-06)
- 修复 uni-app x Android 示例的 SQLite 回调前向引用与可空结果类型导致的 UTS 编译错误。
1.1.3(2026-08-19)
- 修复 Android 结构化 CRUD、Schema Builder、ORM Lite 的嵌套配置经桥接后字段或数组丢失的问题;现在兼容
UTSJSONObject / UTSObject / java.util.Map / java.util.List四类真机对象,包括 uni-app x 自定义type生成的条件项,where.column、columns[].name、orderBy.column及对象数组均可直接读取,公开 API 与调用方式不变。 - 修复 iOS
selectRows / aggregateRows返回数组时,HBuilderX ByJs 的UTSCallback把Array<Any>解释为回调参数列表,导致页面只收到第一行对象的问题;现在将完整行数组装箱为单个回调参数,公开 API 类型和调用方式不变。 - “一键全量自检”在声明
full_check_models前重建专用 ORM 测试表,避免历史自检数据库缺少UNIQUE约束时产生两项 Upsert 假失败;真实业务表缺少唯一约束时仍会返回原 SQLite 错误,不会伪造成功。 - 失败条目新增脱敏
diagnostic字段,只记录回调次数、结果类型/数组长度或截断后的错误码与错误信息,不复制查询行正文。 - uni-app、uni-app x 的组件与完整示例保持相同自检夹具;Harmony、Web、小程序、公开
interface.uts、原生依赖和客户 README 均未改变。 - 本版本修改 Android 公共 UTS 解析路径和 iOS UTS 回调适配层,升级后必须重新制作并安装与 HBuilderX 5.24 匹配的目标平台自定义基座,再以全量自检零失败且无新增崩溃作为真机验收结果。
1.1.2(2026-08-14)
- 修复 iOS 真机执行“一键全量自检”时,
selectRows / aggregateRows的数组回调因 HBuilderX 5.24 生成闭包类型不一致而触发swift_dynamicCastFailure闪退;公开 API 和页面调用方式保持不变。 - README 改为先展示功能特色、适用场景、快速开始和核心配置,移除目录、权限、自定义基座及 Mac/Windows 内部排障章节。
- uni-app 与 uni-app x 的完整组件和示例新增“一键全量自检”和可复制安全报告,直接覆盖全部 32 个公开 API,不新增测试专用原生接口。
- 自检逐项记录通过、失败、跳过和耗时,严格校验
success / fail / complete次数、8 秒超时、事务提交/回滚结果、危险全表操作保护、Schema/迁移幂等、索引、ORM Lite、诊断与关闭状态。 - uni-app x 使用强类型串行状态机隔离结算后的迟到回调;数据库打开失败时跳过依赖链并继续诊断,避免级联假失败。
- 完整示例仅在显式
autoFullCheck=1时自动运行,输出稳定 START/ITEM/DONE/FAILED marker;普通打开页面不会自动写入测试数据库。 - iOS 验收脚本加入全量 marker、失败项、计数、耗时和 crash report 时间窗;只有匹配自定义基座、全量 DONE、零失败且无新增崩溃报告时才可声明真机通过。
- 本版本未改变原生依赖、权限及平台配置;iOS 回调桥与公共诊断版本会进入 App 原生生成物,正式验收应重新制作与当前 HBuilderX 匹配的目标平台自定义基座。
平台兼容性
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 是面向 uni-app / uni-app x 的纯 UTS SQLite 数据库插件。除了兼容 plus.sqlite 风格 API,还提供结构化 CRUD、声明式 Schema Builder、事务安全 Upsert、固定函数聚合、一致性分页、迁移、备份恢复和诊断能力。
功能特色
- 原生 SQLite 多端实现:Android、iOS、Harmony 分别使用平台数据库能力,业务代码保持统一。
- SQL 与结构化操作并存:既能执行原生 SQL,也能通过对象配置完成增删改查,减少字符串拼接。
- 轻量 ORM 能力:内置建表核对、Upsert、计数、聚合和分页,不绑定实体类或额外运行时。
- 安全优先:数据值统一支持参数绑定,结构化接口校验表名、字段名和危险全表操作。
- 工程化能力完整:支持事务、迁移、批处理、备份恢复、导入导出、健康检查和诊断日志。
- 可直接验收:内置演示组件和“一键全量自检”,便于接入后快速确认各项能力。
适用场景
| 业务场景 | 推荐能力 | 典型用途 |
|---|---|---|
| 离线业务数据 | 结构化 CRUD、事务 | 巡检、工单、表单草稿、离线订单 |
| 本地缓存与索引 | 参数化 SQL、批处理、索引 | 消息、文章、商品、搜索历史 |
| 应用配置与状态 | Upsert、计数、聚合 | 用户偏好、下载状态、统计面板 |
| 数据结构演进 | Schema Builder、迁移 | 版本升级新增表、字段和数据修正 |
| 数据备份迁移 | 备份恢复、导入导出 | 换机、售后诊断、本地数据归档 |
快速开始
先打开数据库,再执行参数化 SQL;页面退出或业务结束时关闭数据库。
import {
openDatabase,
executePrepared,
selectSql,
closeDatabase
} from '@/uni_modules/lizhao-sqlite-pro'
const databaseName = 'business'
openDatabase({
name: databaseName,
success() {
executePrepared({
name: databaseName,
sql: 'CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY, name TEXT)',
params: [],
success() {
selectSql({
name: databaseName,
sql: 'SELECT * FROM users',
success(rows) {
console.log('用户数据', rows)
},
fail(err) {
console.error('查询失败', err)
},
complete() {
// 查询结束后再关闭,避免提前结束数据库会话。
closeDatabase({ name: databaseName })
}
})
},
fail(err) {
console.error('建表失败', err)
closeDatabase({ name: databaseName })
}
})
},
fail(err) {
console.error('数据库打开失败', err)
}
})
核心配置
| 参数 | 类型 | 必填 | 说明 | 默认值 | 可选参数 |
|---|---|---|---|---|---|
name |
string |
是 | 数据库名称,同一业务链保持一致 | 无 | 无 |
sql |
string |
SQL 接口必填 | 要执行的 SQL 语句 | 无 | 无 |
params |
Array<any> |
否 | 参数化 SQL 的绑定值 | [] |
无 |
table |
string |
结构化接口必填 | 目标表名 | 无 | 无 |
values |
UTSJSONObject |
写入接口必填 | 新增或更新的字段和值 | 无 | 无 |
where |
UTSJSONObject |
否 | 结构化条件;更新和删除缺省时会触发安全拦截 | 无 | 无 |
success |
function |
否 | 操作成功回调 | 无 | 无 |
fail |
function |
否 | 操作失败回调 | 无 | 无 |
complete |
function |
否 | 成功或失败后都会触发 | 无 | 无 |
接入方式怎么选
| 场景 | 推荐接入方式 | 说明 |
|---|---|---|
| 只需要在业务脚本中读写本地数据库 | 直接调用 API | 从 @/uni_modules/lizhao-sqlite-pro 导入公开 API,适合生产业务接入 |
| 不想手写完整 SQL,只想传查询配置 | 使用结构化 CRUD | 使用 selectRows / insertRow / updateRows / deleteRows / batchCrud,可读性更强,值仍走参数绑定 |
| 需要创建表、核对结构并完成常用数据访问 | 使用 ORM Lite | 使用 ensureSchema / upsertRow / countRows / aggregateRows / paginateRows,标识符受校验、值走参数绑定 |
| 需要按应用版本演进结构或执行数据迁移 | 使用 runMigrations |
Schema Builder 只创建和核对,不会自动删表、改列;结构变更继续使用显式迁移 |
| 需要先验证所有能力 | 使用内置演示组件 | 页面中放置 <lizhao-sqlite-pro />,可快速检查打开、写入、查询、迁移、备份和诊断 |
| App 端需要真实 SQLite 文件数据库 | 重新原生联编后调用 API | Android/iOS/Harmony 需要运行到对应平台并完成原生 UTS 编译 |
| Web/小程序只做演示或轻量缓存 | 使用降级 SQL 子集 | Web/小程序不提供完整 SQLite 文件数据库,能力矩阵会标注 nativeSqlite=false |
支持平台
| 平台 | 是否支持 | 说明 |
|---|---|---|
| Android | 支持 | 使用系统 android.database.sqlite.SQLiteDatabase,需要原生联编或自定义基座后验证 |
| iOS | 支持 | 使用系统 SQLite3 C API,数据库保存在 Documents/lizhao-sqlite-pro |
| Harmony | 支持 | 使用系统 @ohos.data.relationalStore / rdbStore,数据库保存在应用数据库目录 |
| Web | 降级支持 | 使用自包含内存实现,支持结构化 CRUD 与 ORM Lite,但不是完整 SQLite,刷新后不保证保留 |
| 微信小程序 | 基础降级 | 保留基础内存 SQL 子集;ORM Lite 明确返回不支持,不伪造成功 |
| 支付宝小程序 | 基础降级 | 保留基础内存 SQL 子集;ORM Lite 明确返回不支持,不伪造成功 |
安装与引入
页面和业务代码只能从插件根目录导入,不要直接引用 utssdk 内部文件。
// 从插件根目录统一导入公开 API,不要直接引用 utssdk 内部文件。
import {
openDatabase,
isOpenDatabase,
closeDatabase,
transaction,
executeSql,
selectSql,
getDatabasePath,
executePrepared,
batch,
selectRows,
insertRow,
updateRows,
deleteRows,
batchCrud,
ensureSchema,
createIndex,
dropIndex,
upsertRow,
countRows,
aggregateRows,
paginateRows,
runMigrations,
backupDatabase,
restoreDatabase,
exportDatabase,
importDatabase,
configureDatabase,
inspectDatabase,
runHealthCheck,
getCapabilities,
getDiagnostics,
clearDiagnostics
} from '@/uni_modules/lizhao-sqlite-pro'
API 列表
| 函数名 | 说明 | 参数 |
|---|---|---|
openDatabase |
打开数据库 | DatabaseOptions |
isOpenDatabase |
判断数据库是否打开 | DatabaseOptions |
closeDatabase |
关闭数据库 | DatabaseOptions |
transaction |
执行事务 | SqlTransactionOptions |
executeSql |
执行增删改 SQL | SqlOperationOptions |
selectSql |
执行查询 SQL | SqlOperationOptions |
getDatabasePath |
获取数据库路径 | name: string |
executePrepared |
执行参数化 SQL | PreparedSqlOptions |
batch |
批处理 SQL | BatchSqlOptions |
selectRows |
结构化查询 | SelectRowsOptions |
insertRow |
结构化新增 | InsertRowOptions |
updateRows |
结构化更新 | UpdateRowsOptions |
deleteRows |
结构化删除 | DeleteRowsOptions |
batchCrud |
结构化批量增删查改 | BatchCrudOptions |
ensureSchema |
声明式创建并核对表和索引 | EnsureSchemaOptions |
createIndex |
显式创建安全索引 | CreateIndexOptions |
dropIndex |
显式删除安全索引 | DropIndexOptions |
upsertRow |
按冲突字段插入或原位更新 | UpsertRowOptions |
countRows |
按结构化条件计数 | CountRowsOptions |
aggregateRows |
执行白名单聚合 | AggregateRowsOptions |
paginateRows |
在同一读取事务中返回总数和当前页 | PaginateRowsOptions |
runMigrations |
执行迁移 | MigrationOptions |
backupDatabase |
备份数据库 | DatabaseFileOptions |
restoreDatabase |
恢复数据库 | DatabaseFileOptions |
exportDatabase |
导出数据库 | DatabaseTransferOptions |
importDatabase |
导入数据库 | DatabaseTransferOptions |
configureDatabase |
配置数据库 PRAGMA | SqlitePragmaOptions |
inspectDatabase |
检查数据库结构 | SqliteInspectionOptions |
runHealthCheck |
运行数据库健康检查 | SqliteHealthCheckOptions |
getCapabilities |
获取能力矩阵 | 无 |
getDiagnostics |
获取诊断日志 | GetDiagnosticsOptions |
clearDiagnostics |
清空诊断日志 | 无 |
ORM Lite 快速接入
Schema Builder 适合首次创建并核对结构;runMigrations 适合版本升级时新增列、迁移数据或执行其他显式变更。ensureSchema 只会创建缺失的表和索引,并核对已有字段、主键、非空和索引声明;发现冲突会失败,不会自动 ALTER TABLE、删表或重建客户数据。
import {
openDatabase,
ensureSchema,
upsertRow,
countRows,
aggregateRows,
paginateRows
} from '@/uni_modules/lizhao-sqlite-pro'
openDatabase({
name: 'business',
success() {
ensureSchema({
name: 'business',
tables: [{
name: 'users',
columns: [
{ name: 'id', type: 'INTEGER', primaryKey: true, autoIncrement: true },
{ name: 'email', type: 'TEXT', notNull: true, unique: true },
{ name: 'score', type: 'REAL', defaultValue: 0 },
{ name: 'created_at', type: 'TEXT', defaultExpression: 'CURRENT_TIMESTAMP' }
],
indexes: [
{ name: 'idx_users_email', columns: ['email'], unique: true },
{ name: 'idx_users_score', columns: ['score'] }
]
}],
success(res) {
console.log('Schema 已就绪', res)
},
fail(err) {
console.error('Schema 声明或已有结构冲突', err)
}
})
}
})
Upsert 不使用删除重插语义。新 SQLite 使用原生 ON CONFLICT,旧运行时在当前事务内执行更新/插入回退:
upsertRow({
name: 'business',
table: 'users',
values: [
{ column: 'email', value: 'customer@example.com' },
{ column: 'score', value: 88 }
],
conflictColumns: ['email'],
updateColumns: ['score'],
success(res) {
console.log(res.inserted, res.updated, res.affectedRows)
}
})
计数、聚合和分页示例:
countRows({
name: 'business',
table: 'users',
where: [{ column: 'score', op: '>=', value: 60 }],
success(res) { console.log('总数', res.count) }
})
aggregateRows({
name: 'business',
table: 'users',
aggregates: [
{ function: 'COUNT', column: '*', alias: 'user_count' },
{ function: 'AVG', column: 'score', alias: 'score_avg' }
],
success(rows) { console.log('聚合', rows) }
})
paginateRows({
name: 'business',
table: 'users',
orderBy: [{ column: 'id', direction: 'DESC' }],
page: 1,
pageSize: 20,
success(res) { console.log(res.total, res.pageCount, res.rows) }
})
ensureSchema(options)
创建缺失表和索引,并核对已有结构。已有额外字段允许保留;声明字段缺失、类型/主键/非空约束或同名索引不一致时返回冲突错误。
| 参数 | 类型 | 必填 | 说明 | 默认值 | 可选参数 |
|---|---|---|---|---|---|
| options | EnsureSchemaOptions | 是 | Schema 参数对象 | 无 | name / tables / success / fail / complete |
| options.name | string | 是 | 已打开的数据库名称 | 无 | 无 |
| options.tables | Array |
是 | 表声明数组 | 无 | name / columns / primaryKey / indexes |
| options.success | function | 否 | 创建与校验全部成功后触发 | 无 | 无 |
| options.fail | function | 否 | 声明非法、结构冲突或执行失败时触发 | 无 | 无 |
| options.complete | function | 否 | 成功或失败后触发一次 | 无 | 无 |
返回 createdTables / existingTables / createdIndexes / existingIndexes / checkedColumns。
createIndex(options)
显式创建索引;同名索引存在时会核对字段顺序和唯一性。
| 参数 | 类型 | 必填 | 说明 | 默认值 | 可选参数 |
|---|---|---|---|---|---|
| options.name | string | 是 | 数据库名称 | 无 | 无 |
| options.table | string | 是 | 表名 | 无 | 安全标识符 |
| options.index | string | 是 | 索引名 | 无 | 安全标识符 |
| options.columns | Array |
是 | 有序字段列表 | 无 | 无 |
| options.unique | boolean | 否 | 是否唯一索引 | false | true / false |
| options.ifNotExists | boolean | 否 | 已存在且一致时是否返回成功 | false | true / false |
返回 created / dropped / table / index。
dropIndex(options)
显式删除索引,不接受任意 SQL 片段。
| 参数 | 类型 | 必填 | 说明 | 默认值 | 可选参数 |
|---|---|---|---|---|---|
| options.name | string | 是 | 数据库名称 | 无 | 无 |
| options.index | string | 是 | 索引名 | 无 | 安全标识符 |
| options.ifExists | boolean | 否 | 索引不存在时是否返回成功 | false | true / false |
返回 dropped / table / index。
upsertRow(options)
按 conflictColumns 判断插入或原位更新;所有值使用参数绑定。
| 参数 | 类型 | 必填 | 说明 | 默认值 | 可选参数 |
|---|---|---|---|---|---|
| options.name | string | 是 | 数据库名称 | 无 | 无 |
| options.table | string | 是 | 表名 | 无 | 安全标识符 |
| options.values | Array |
是 | 写入字段和值 | 无 | { column, value } |
| options.conflictColumns | Array |
是 | 冲突判断字段 | 无 | 必须同时出现在 values |
| options.updateColumns | Array |
否 | 冲突后更新字段 | 除冲突字段外的 values 字段 | 无 |
| options.doNothing | boolean | 否 | 冲突时不更新 | false | true / false |
返回 inserted / updated / affectedRows / insertId。
countRows(options)
按与结构化 CRUD 相同的安全条件统计行数。
| 参数 | 类型 | 必填 | 说明 | 默认值 | 可选参数 |
|---|---|---|---|---|---|
| options.name | string | 是 | 数据库名称 | 无 | 无 |
| options.table | string | 是 | 表名 | 无 | 安全标识符 |
| options.where | string | Array |
否 | 参数化片段或对象式条件 | 无 | 公开比较操作符 |
| options.whereParams | Array |
否 | where 占位符参数 | 无 | 无 |
返回 { name, count }。
aggregateRows(options)
只允许 COUNT / SUM / AVG / MIN / MAX,聚合别名和字段均执行标识符校验。
| 参数 | 类型 | 必填 | 说明 | 默认值 | 可选参数 |
|---|---|---|---|---|---|
| options.name | string | 是 | 数据库名称 | 无 | 无 |
| options.table | string | 是 | 表名 | 无 | 安全标识符 |
| options.aggregates | Array |
是 | 聚合项 | 无 | function / column / alias |
| options.where | string | Array |
否 | 查询条件 | 无 | 无 |
| options.groupBy | Array |
否 | 分组字段 | 无 | 安全标识符 |
| options.orderBy | string | Array |
否 | 分组结果排序 | 无 | ASC / DESC |
| options.limit | number | 否 | 最大结果数 | 无 | 大于等于 0 |
| options.offset | number | 否 | 结果偏移 | 无 | 大于等于 0 |
返回聚合结果对象数组。
paginateRows(options)
App 原生端在同一读取事务中查询总数和当前页;Web 在同一内存快照中计算。
| 参数 | 类型 | 必填 | 说明 | 默认值 | 可选参数 |
|---|---|---|---|---|---|
| options.name | string | 是 | 数据库名称 | 无 | 无 |
| options.table | string | 是 | 表名 | 无 | 安全标识符 |
| options.columns | Array |
否 | 返回字段 | * |
无 |
| options.where | string | Array |
否 | 查询条件 | 无 | 无 |
| options.orderBy | string | Array |
否 | 排序 | 无 | ASC / DESC |
| options.page | number | 是 | 从 1 开始的页码 | 无 | 正整数 |
| options.pageSize | number | 是 | 每页数量 | 无 | 1 到 500 |
返回 total / pageCount / hasPrevious / hasNext / rows。
快速上手示例
下面示例展示最常用的打开数据库、建表、参数化写入和查询流程。页面和业务代码仍然只从插件根目录导入。
// 快速上手:打开数据库 -> 建表 -> 参数化写入 -> 查询结果。
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)
}
})
常见增强示例
跑通快速上手后,通常会继续补四类能力:先用结构化 CRUD 减少手写 SQL,再配置数据库稳定性参数,之后查看结构和健康状态,最后用 JSON 导出导入做数据搬迁或调试留档。
结构化 CRUD
结构化 CRUD 适合业务侧不想手写完整 SQL 的场景。where 支持两种写法:一种是 SQL 片段 + whereParams,另一种是对象式条件数组。对象式条件数组不支持任意对象动态键,例如 { age: 18 },这是为了兼容 Harmony ArkTS 对 UTSJSONObject 动态下标的严格限制。
Web 内存降级端支持结构化新增、查询、更新、删除和失败回滚批处理。对象条件数组支持全部公开比较操作符和 AND / OR;字符串 where + whereParams 支持标量比较、LIKE / IS NULL / IS NOT NULL 的安全子集。查询还支持字段投影、排序、limit / offset。Web 暂不执行 groupBy / having 聚合语义,传入时会进入 fail + complete;App 原生 SQLite 端继续支持完整结构化 SQL 构造合同。Web 的 structuredCrud=true 只表示这些内存结构化操作可用,nativeSqlite 仍为 false。
// 结构化 CRUD:用配置项表达 where/orderBy/groupBy/having/limit/offset。
import {
selectRows,
insertRow,
updateRows,
deleteRows,
batchCrud
} from '@/uni_modules/lizhao-sqlite-pro'
// 片段 + 参数:适合已有 SQL 条件片段的业务。
selectRows({
name: 'demo',
table: 'users',
columns: ['age', 'COUNT(*) AS total'],
where: 'age >= ? AND status = ?',
whereParams: [18, 'active'],
groupBy: 'age',
having: 'COUNT(*) > ?',
havingParams: [0],
orderBy: 'age DESC',
limit: 10,
offset: 0,
success(rows) {
console.log('分页分组查询结果', rows)
},
fail(err) {
console.log('结构化查询失败', err)
}
})
// 对象式条件数组:常用操作符由插件转换成参数化 SQL。
selectRows({
name: 'demo',
table: 'users',
columns: ['id', 'name', 'age'],
where: [
{ column: 'age', op: '>=', value: 18 },
{ column: 'name', op: 'LIKE', value: 'A%', connector: 'AND' }
],
orderBy: [{ column: 'id', direction: 'DESC' }],
limit: 10,
success(rows) {
console.log('对象式条件查询结果', rows)
}
})
// 新增、更新、删除都用字段数组表达,字段值会通过 ? 参数绑定。
insertRow({
name: 'demo',
table: 'users',
values: [
{ column: 'name', value: 'Alice' },
{ column: 'age', value: 30 },
{ column: 'status', value: 'active' }
],
success(res) {
console.log('结构化新增成功', res)
}
})
updateRows({
name: 'demo',
table: 'users',
values: [{ column: 'status', value: 'vip' }],
where: [{ column: 'age', op: '>=', value: 30 }],
success(res) {
console.log('结构化更新成功', res)
}
})
deleteRows({
name: 'demo',
table: 'users',
where: [{ column: 'status', op: '=', value: 'inactive' }],
success(res) {
console.log('结构化删除成功', res)
}
})
// 批量增删查改复用事务,失败时按 rollbackOnFail 回滚。
batchCrud({
name: 'demo',
transaction: true,
rollbackOnFail: true,
items: [
{
action: 'insert',
table: 'users',
values: [
{ column: 'name', value: 'Bob' },
{ column: 'age', value: 25 }
]
},
{
action: 'select',
table: 'users',
where: [{ column: 'age', op: 'IN', values: [25, 30] }],
orderBy: [{ column: 'id', direction: 'DESC' }],
limit: 5
}
],
success(res) {
console.log('结构化批量执行成功', res.results)
}
})
配置 PRAGMA
// App 原生端建议在打开数据库后配置外键、WAL 和 busy timeout。
import { configureDatabase } from '@/uni_modules/lizhao-sqlite-pro'
configureDatabase({
name: 'demo',
foreignKeys: true,
journalMode: 'WAL',
busyTimeoutMs: 3000,
synchronous: 'NORMAL',
success(res) {
console.log('PRAGMA 配置成功', res.applied, res.values)
},
fail(err) {
console.log('PRAGMA 配置失败', err)
}
})
数据库健康检查
// 健康检查会返回 quick_check/integrity_check 结果、表数量和警告信息。
import { runHealthCheck } from '@/uni_modules/lizhao-sqlite-pro'
runHealthCheck({
name: 'demo',
fullCheck: false,
includeTableStats: true,
success(res) {
console.log('数据库健康检查', res.ok, res.integrity, res.warnings)
},
fail(err) {
console.log('健康检查失败', err)
}
})
结构检查
// 结构检查适合在发布前或售后排查时确认表结构、列名、行数和样例数据。
import { inspectDatabase } from '@/uni_modules/lizhao-sqlite-pro'
inspectDatabase({
name: 'demo',
includeSampleRows: true,
sampleLimit: 2,
success(res) {
console.log('表数量', res.tableCount)
console.log('表结构', res.tables)
}
})
JSON 导出导入
// JSON 导出会返回 format/schema/tables/rows,可直接作为 importDatabase 的 data 使用。
import { exportDatabase, importDatabase } from '@/uni_modules/lizhao-sqlite-pro'
exportDatabase({
name: 'demo',
success(res) {
console.log('JSON 导出表数量', res.tableCount)
importDatabase({
name: 'demo',
data: res.data,
success(importRes) {
console.log('JSON 导入表数量', importRes.tableCount)
},
fail(err) {
console.log('JSON 导入失败', err)
}
})
},
fail(err) {
console.log('JSON 导出失败', err)
}
})
uni-app 调用示例
下面示例适用于普通 uni-app Vue 页面。Web 端会使用内存 SQL 子集降级,App 端在原生联编后使用真实 SQLite。
<template>
<view>
<!-- 点击按钮后执行最小数据库写入流程。 -->
<button @click="createDemoUser">写入演示用户</button>
</view>
</template>
<script>
import { openDatabase, executeSql } from '@/uni_modules/lizhao-sqlite-pro'
export default {
methods: {
createDemoUser() {
// 先打开数据库,再创建表并写入演示数据。
openDatabase({
name: 'demo',
success() {
executeSql({
name: 'demo',
sql: [
'CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT)',
"INSERT INTO users (name) VALUES ('uni-app')"
],
success(res) {
console.log('uni-app 写入成功', res)
},
fail(err) {
console.log('uni-app 写入失败', err)
}
})
},
fail(err) {
console.log('uni-app 打开失败', err)
}
})
}
}
}
</script>
uni-app x 调用示例
下面示例适用于 uni-app x 页面脚本。复杂业务建议优先使用 interface.uts 中声明的类型约束参数。
<template>
<view>
<!-- uni-app x 中同样只从插件根目录调用公开 API。 -->
<button @click="queryDemoUsers">查询演示用户</button>
</view>
</template>
<script setup lang="uts">
import { openDatabase, selectSql } from '@/uni_modules/lizhao-sqlite-pro'
// 查询前先确保数据库已打开,失败回调会返回 SqliteFail。
function queryDemoUsers(): void {
openDatabase({
name: 'demo',
success() {
selectSql({
name: 'demo',
sql: 'SELECT * FROM users',
success(rows: any) {
console.log('uni-app x 查询结果', rows)
},
fail(err) {
console.log('uni-app x 查询失败', err)
}
})
},
fail(err) {
console.log('uni-app x 打开失败', err)
}
})
}
</script>
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)
}
})
selectRows(options)
说明
执行结构化查询。插件会把 table / columns / where / groupBy / having / orderBy / limit / offset 转成参数化查询 SQL。
参数
| 参数 | 类型 | 必填 | 说明 | 默认值 | 可选参数 |
|---|---|---|---|---|---|
| options | SelectRowsOptions | 是 | 结构化查询参数 | 无 | name / table / columns / where / whereParams / groupBy / having / havingParams / orderBy / limit / offset / success / fail / complete |
| options.name | string | 是 | 数据库名称 | 无 | 无 |
| options.table | string | 是 | 表名 | 无 | 无 |
| options.columns | Array |
否 | 查询字段或表达式 | ['*'] |
无 |
| options.where | string / Array |
否 | where 条件,支持片段或对象式条件数组 | 无 | = / != / > / >= / < / <= / LIKE / IN / BETWEEN / IS NULL / IS NOT NULL |
| options.whereParams | Array |
否 | where 片段参数 | [] |
无 |
| options.groupBy | string / Array |
否 | 分组字段 | 无 | 无 |
| options.having | string | 否 | having 片段 | 无 | 无 |
| options.havingParams | Array |
否 | having 参数 | [] |
无 |
| options.orderBy | string / Array |
否 | 排序配置 | 无 | ASC / DESC |
| options.limit | number | 否 | 返回条数 | 无 | 无 |
| options.offset | number | 否 | 分页偏移量 | 无 | 无 |
| options.success | function | 否 | 查询成功回调 | 无 | 无 |
| options.fail | function | 否 | 查询失败回调 | 无 | 无 |
| options.complete | function | 否 | 完成回调 | 无 | 无 |
返回值
| 字段 | 类型 | 说明 |
|---|---|---|
| rows | Array<object> | 成功回调参数为查询结果数组 |
示例
// 使用结构化配置完成 where、排序和分页查询。
selectRows({
name: 'demo',
table: 'users',
columns: ['id', 'name', 'age'],
where: [
{ column: 'age', op: '>=', value: 18 },
{ column: 'name', op: 'LIKE', value: 'A%' }
],
orderBy: [{ column: 'id', direction: 'DESC' }],
limit: 10,
offset: 0,
success(rows) {
console.log('结构化查询结果', rows)
}
})
insertRow(options)
说明
执行结构化单行新增。字段和值通过 values 数组传入,值会通过 ? 参数绑定。
参数
| 参数 | 类型 | 必填 | 说明 | 默认值 | 可选参数 |
|---|---|---|---|---|---|
| options | InsertRowOptions | 是 | 结构化新增参数 | 无 | name / table / values / success / fail / complete |
| options.name | string | 是 | 数据库名称 | 无 | 无 |
| options.table | string | 是 | 表名 | 无 | 无 |
| options.values | Array |
是 | 字段和值列表 | 无 | 无 |
| options.success | function | 否 | 新增成功回调 | 无 | 无 |
| options.fail | function | 否 | 新增失败回调 | 无 | 无 |
| options.complete | function | 否 | 完成回调 | 无 | 无 |
返回值
| 字段 | 类型 | 说明 |
|---|---|---|
| name | string | 数据库名称 |
| affectedRows | number | 影响行数 |
| insertId | number | 最近插入 ID |
| statementCount | number | 执行语句数量 |
| lastSql | string | 生成后的 SQL |
示例
// 使用字段数组新增单行数据,字段值自动参数化绑定。
insertRow({
name: 'demo',
table: 'users',
values: [
{ column: 'name', value: 'Alice' },
{ column: 'age', value: 30 }
],
success(res) {
console.log('结构化新增成功', res)
}
})
updateRows(options)
说明
执行结构化更新。默认必须传入 where,如果确实需要更新全表,必须显式传 allowAll: true。
参数
| 参数 | 类型 | 必填 | 说明 | 默认值 | 可选参数 |
|---|---|---|---|---|---|
| options | UpdateRowsOptions | 是 | 结构化更新参数 | 无 | name / table / values / where / whereParams / allowAll / success / fail / complete |
| options.name | string | 是 | 数据库名称 | 无 | 无 |
| options.table | string | 是 | 表名 | 无 | 无 |
| options.values | Array |
是 | 要更新的字段和值 | 无 | 无 |
| options.where | string / Array |
否 | 更新条件 | 无 | = / != / > / >= / < / <= / LIKE / IN / BETWEEN / IS NULL / IS NOT NULL |
| options.whereParams | Array |
否 | where 片段参数 | [] |
无 |
| options.allowAll | boolean | 否 | 无 where 时是否允许更新全表 | false |
true / false |
| options.success | function | 否 | 更新成功回调 | 无 | 无 |
| options.fail | function | 否 | 更新失败回调 | 无 | 无 |
| options.complete | function | 否 | 完成回调 | 无 | 无 |
返回值
| 字段 | 类型 | 说明 |
|---|---|---|
| name | string | 数据库名称 |
| affectedRows | number | 影响行数 |
| insertId | number | 最近插入 ID |
| statementCount | number | 执行语句数量 |
| lastSql | string | 生成后的 SQL |
示例
// 更新时建议始终传 where,避免误操作全表。
updateRows({
name: 'demo',
table: 'users',
values: [{ column: 'status', value: 'vip' }],
where: [{ column: 'age', op: '>=', value: 30 }],
success(res) {
console.log('结构化更新成功', res)
}
})
deleteRows(options)
说明
执行结构化删除。默认必须传入 where,如果确实需要删除全表,必须显式传 allowAll: true。
参数
| 参数 | 类型 | 必填 | 说明 | 默认值 | 可选参数 |
|---|---|---|---|---|---|
| options | DeleteRowsOptions | 是 | 结构化删除参数 | 无 | name / table / where / whereParams / allowAll / success / fail / complete |
| options.name | string | 是 | 数据库名称 | 无 | 无 |
| options.table | string | 是 | 表名 | 无 | 无 |
| options.where | string / Array |
否 | 删除条件 | 无 | = / != / > / >= / < / <= / LIKE / IN / BETWEEN / IS NULL / IS NOT NULL |
| options.whereParams | Array |
否 | where 片段参数 | [] |
无 |
| options.allowAll | boolean | 否 | 无 where 时是否允许删除全表 | false |
true / false |
| options.success | function | 否 | 删除成功回调 | 无 | 无 |
| options.fail | function | 否 | 删除失败回调 | 无 | 无 |
| options.complete | function | 否 | 完成回调 | 无 | 无 |
返回值
| 字段 | 类型 | 说明 |
|---|---|---|
| name | string | 数据库名称 |
| affectedRows | number | 影响行数 |
| insertId | number | 最近插入 ID |
| statementCount | number | 执行语句数量 |
| lastSql | string | 生成后的 SQL |
示例
// 删除建议传明确 where;全表删除必须传 allowAll: true。
deleteRows({
name: 'demo',
table: 'users',
where: [{ column: 'status', op: '=', value: 'inactive' }],
success(res) {
console.log('结构化删除成功', res)
}
})
batchCrud(options)
说明
执行结构化批量增删查改。插件会先把每个条目转换为参数化 SQL,再复用 batch 的事务和回滚能力。
参数
| 参数 | 类型 | 必填 | 说明 | 默认值 | 可选参数 |
|---|---|---|---|---|---|
| options | BatchCrudOptions | 是 | 结构化批量参数 | 无 | name / items / transaction / rollbackOnFail / success / fail / complete |
| options.name | string | 是 | 数据库名称 | 无 | 无 |
| options.items | Array |
是 | 批量条目 | 无 | 无 |
| options.items[].action | string | 是 | 当前动作 | 无 | select / insert / update / delete |
| options.items[].table | string | 是 | 表名 | 无 | 无 |
| options.items[].columns | Array |
否 | 查询字段,仅 select 使用 | ['*'] |
无 |
| options.items[].values | Array |
否 | 新增或更新字段值 | 无 | 无 |
| options.items[].where | string / Array |
否 | where 条件 | 无 | 无 |
| options.items[].allowAll | boolean | 否 | update/delete 无 where 时是否允许全表操作 | 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 的执行结果 |
示例
// 使用 batchCrud 在事务中执行结构化新增和查询。
batchCrud({
name: 'demo',
transaction: true,
rollbackOnFail: true,
items: [
{
action: 'insert',
table: 'users',
values: [
{ column: 'name', value: 'Bob' },
{ column: 'age', value: 25 }
]
},
{
action: 'select',
table: 'users',
where: [{ column: 'age', op: '>=', value: 18 }],
orderBy: [{ column: 'id', direction: 'DESC' }],
limit: 10
}
],
success(res) {
console.log('结构化批量结果', res.results)
}
})
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)
说明
导出数据库为稳定 JSON 文本。JSON 顶层包含 format / schema / tables / rows,可以保存到业务文件,也可以直接传给 importDatabase({ data }) 做恢复。App 端会导出真实表结构和行数据;Web/小程序降级端导出当前内存 SQL 子集中的表数据。
参数
| 参数 | 类型 | 必填 | 说明 | 默认值 | 可选参数 |
|---|---|---|---|---|---|
| options | DatabaseTransferOptions | 是 | 导出参数 | 无 | name / path / data / success / fail / complete |
| options.name | string | 是 | 数据库名称 | 无 | 无 |
| options.path | string | 否 | 可选目标路径;Android/iOS 会尝试把 JSON 写入该路径,Harmony 主要通过 data 返回 |
无 | 无 |
| options.data | string | 否 | 导出时通常不用传,保留给统一参数结构 | 无 | 无 |
| options.success | function | 否 | 导出成功回调 | 无 | 无 |
| options.fail | function | 否 | 导出失败回调 | 无 | 无 |
| options.complete | function | 否 | 完成回调 | 无 | 无 |
返回值
| 字段 | 类型 | 说明 |
|---|---|---|
| name | string | 数据库名称 |
| path | string | 数据库路径或导出路径 |
| data | string | 导出的 lizhao-sqlite-pro-json JSON 文本 |
| tableCount | number | 导出表数量 |
示例
// 导出稳定 JSON 文本,data 可直接用于 importDatabase。
exportDatabase({
name: 'demo',
success(res) {
console.log('JSON 导出成功', res.tableCount, res.data)
},
fail(err) {
console.log('导出失败', err)
}
})
importDatabase(options)
说明
导入数据库。优先支持 data 传入 lizhao-sqlite-pro-json 文本,插件会按 JSON 中的 tables 重建表并写入行数据。Android/iOS 也支持 path 指向 JSON 文件;如果 path 指向普通数据库备份文件,则按文件恢复兜底处理。Web/小程序降级端支持导入自身导出的 JSON 数据。
参数
| 参数 | 类型 | 必填 | 说明 | 默认值 | 可选参数 |
|---|---|---|---|---|---|
| options | DatabaseTransferOptions | 是 | 导入参数 | 无 | name / path / data / success / fail / complete |
| options.name | string | 是 | 数据库名称 | 无 | 无 |
| options.path | string | 否 | 导入源文件路径;可为 JSON 文件或数据库备份文件 | 无 | 无 |
| options.data | string | 否 | 导入 JSON 文本,优先级高于 path |
无 | 无 |
| options.success | function | 否 | 导入成功回调 | 无 | 无 |
| options.fail | function | 否 | 导入失败回调 | 无 | 无 |
| options.complete | function | 否 | 完成回调 | 无 | 无 |
返回值
| 字段 | 类型 | 说明 |
|---|---|---|
| name | string | 数据库名称 |
| path | string | 导入后的数据库路径 |
| data | string | 本次导入使用的 JSON 文本;文件恢复兜底时为空 |
| tableCount | number | JSON 导入表数量;文件恢复兜底时为 -1 |
示例
// 先导出 JSON,再把同一份 JSON 导入回数据库。
exportDatabase({
name: 'demo',
success(exportRes) {
importDatabase({
name: 'demo',
data: exportRes.data,
success(importRes) {
console.log('JSON 导入成功', importRes.tableCount)
},
fail(err) {
console.log('JSON 导入失败', err)
}
})
},
fail(err) {
console.log('JSON 导出失败', err)
}
})
configureDatabase(options)
说明
配置数据库常用 PRAGMA。建议在 openDatabase 成功后调用,用于启用外键、WAL、忙碌等待和同步级别。Web/小程序降级端会明确返回已降级说明,不伪造原生 PRAGMA 生效。
参数
| 参数 | 类型 | 必填 | 说明 | 默认值 | 可选参数 |
|---|---|---|---|---|---|
| options | SqlitePragmaOptions | 是 | PRAGMA 配置参数 | 无 | name / foreignKeys / journalMode / busyTimeoutMs / synchronous / success / fail / complete |
| options.name | string | 是 | 数据库名称 | 无 | 无 |
| options.foreignKeys | boolean | 否 | 是否启用外键约束 | 无 | true / false |
| options.journalMode | string | 否 | 日志模式 | 无 | WAL / DELETE / TRUNCATE / PERSIST / MEMORY / OFF |
| options.busyTimeoutMs | number | 否 | 数据库忙碌等待时间,单位毫秒 | 无 | 无 |
| options.synchronous | string | 否 | 同步级别 | 无 | NORMAL / FULL / OFF / EXTRA |
| options.success | function | 否 | 配置成功回调 | 无 | 无 |
| options.fail | function | 否 | 配置失败回调 | 无 | 无 |
| options.complete | function | 否 | 完成回调 | 无 | 无 |
返回值
| 字段 | 类型 | 说明 |
|---|---|---|
| name | string | 数据库名称 |
| applied | Array |
本次实际应用的 PRAGMA 项 |
| values | UTSJSONObject | 应用后的配置摘要或降级说明 |
示例
// 打开数据库后配置常用稳定性参数。
configureDatabase({
name: 'demo',
foreignKeys: true,
journalMode: 'WAL',
busyTimeoutMs: 3000,
synchronous: 'NORMAL',
success(res) {
console.log('PRAGMA 配置成功', res)
}
})
inspectDatabase(options)
说明 检查数据库结构,返回表数量、建表 SQL、列名、行数和可选样例行。适合发布前自检、售后排查、导出前确认表结构。
参数
| 参数 | 类型 | 必填 | 说明 | 默认值 | 可选参数 |
|---|---|---|---|---|---|
| options | SqliteInspectionOptions | 是 | 结构检查参数 | 无 | name / includeSampleRows / sampleLimit / success / fail / complete |
| options.name | string | 是 | 数据库名称 | 无 | 无 |
| options.includeSampleRows | boolean | 否 | 是否返回每张表的样例行 | false |
true / false |
| options.sampleLimit | number | 否 | 样例行数量 | 3 |
无 |
| options.success | function | 否 | 检查成功回调 | 无 | 无 |
| options.fail | function | 否 | 检查失败回调 | 无 | 无 |
| options.complete | function | 否 | 完成回调 | 无 | 无 |
返回值
| 字段 | 类型 | 说明 |
|---|---|---|
| name | string | 数据库名称 |
| path | string | 数据库路径或降级路径 |
| tableCount | number | 表数量 |
| tables | Array |
表结构摘要列表 |
示例
// 检查表结构并返回少量样例数据。
inspectDatabase({
name: 'demo',
includeSampleRows: true,
sampleLimit: 2,
success(res) {
console.log('数据库结构', res.tables)
}
})
runHealthCheck(options)
说明
运行数据库健康检查。App 端执行 PRAGMA quick_check 或 PRAGMA integrity_check,并可返回表统计和警告信息;Web/小程序降级端返回内存表状态。
参数
| 参数 | 类型 | 必填 | 说明 | 默认值 | 可选参数 |
|---|---|---|---|---|---|
| options | SqliteHealthCheckOptions | 是 | 健康检查参数 | 无 | name / fullCheck / includeTableStats / success / fail / complete |
| options.name | string | 是 | 数据库名称 | 无 | 无 |
| options.fullCheck | boolean | 否 | 是否执行完整 integrity_check,否则执行 quick_check |
false |
true / false |
| options.includeTableStats | boolean | 否 | 是否返回表行数统计 | true |
true / false |
| options.success | function | 否 | 检查成功回调 | 无 | 无 |
| options.fail | function | 否 | 检查失败回调 | 无 | 无 |
| options.complete | function | 否 | 完成回调 | 无 | 无 |
返回值
| 字段 | 类型 | 说明 |
|---|---|---|
| name | string | 数据库名称 |
| path | string | 数据库路径或降级路径 |
| ok | boolean | 检查是否通过 |
| integrity | string | quick_check 或 integrity_check 结果 |
| databaseSize | number | 数据库文件大小;无法统计时为 0 |
| tableCount | number | 表数量 |
| tableStats | Array |
表级统计 |
| warnings | Array |
警告信息 |
示例
// 快速检查数据库是否健康。
runHealthCheck({
name: 'demo',
fullCheck: false,
includeTableStats: true,
success(res) {
console.log('健康检查', res.ok, res.integrity, res.warnings)
}
})
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 | 是否支持导入导出 |
| jsonExportImport | boolean | 是否支持 lizhao-sqlite-pro-json 导出导入 |
| healthCheck | boolean | 是否支持健康检查 |
| pragmaConfig | boolean | 是否支持 PRAGMA 配置 |
| schemaInspection | 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,不会伪造成功。
一键全量自检
内置 uni-app / uni-app x 完整组件和示例均提供“一键全量自检”。它会从插件根入口串行调用真实公开 API,并生成包含“通过 / 失败 / 跳过 / 耗时”的安全报告;报告不会复制数据库导出的数据正文。
- 手动验收:进入完整示例,点击“一键全量自检”,结束后可点击“复制自检报告”。
- 自动验收:打开完整示例页时显式追加
autoFullCheck=1,运行日志会输出AUTO_SQLITE_FULL_CHECK_START / ITEM / DONE / FAILED。 - 普通打开页面不会自动执行,也不会自动创建或写入自检数据库。
skipped表示能力矩阵明确不支持,例如部分平台没有文件备份恢复;它不等于通过,也不等于失败。- App 真机报告必须来自包含插件原生实现、诊断版本一致且与当前 HBuilderX 匹配的自定义基座;升级插件版本后应重新原生联编,资源同步或 appResource 编译不能单独证明真机数据库链路通过。
// 完整回归示例:覆盖兼容 API、增强 API、迁移、备份恢复和诊断日志。
import {
openDatabase,
isOpenDatabase,
closeDatabase,
transaction,
executeSql,
selectSql,
getDatabasePath,
executePrepared,
batch,
selectRows,
insertRow,
updateRows,
deleteRows,
batchCrud,
runMigrations,
backupDatabase,
restoreDatabase,
exportDatabase,
importDatabase,
configureDatabase,
inspectDatabase,
runHealthCheck,
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)
// 结构化 CRUD 会生成参数化 SQL,业务侧不用拼完整 SELECT/INSERT/UPDATE/DELETE。
await callSqlite('insertRow', {
name: dbName,
table: 'users',
values: [
{ column: 'name', value: 'Daisy' },
{ column: 'age', value: 28 }
]
}, insertRow)
await callSqlite('selectRows', {
name: dbName,
table: 'users',
columns: ['id', 'name', 'age'],
where: [
{ column: 'age', op: '>=', value: 18 },
{ column: 'name', op: 'LIKE', value: 'D%' }
],
orderBy: [{ column: 'id', direction: 'DESC' }],
limit: 10,
offset: 0
}, selectRows)
await callSqlite('updateRows', {
name: dbName,
table: 'users',
values: [{ column: 'age', value: 29 }],
where: 'name = ?',
whereParams: ['Daisy']
}, updateRows)
await callSqlite('deleteRows', {
name: dbName,
table: 'users',
where: [{ column: 'name', op: '=', value: 'nobody' }]
}, deleteRows)
await callSqlite('batchCrud', {
name: dbName,
transaction: true,
rollbackOnFail: true,
items: [
{
action: 'insert',
table: 'users',
values: [
{ column: 'name', value: 'Eve' },
{ column: 'age', value: 32 }
]
},
{
action: 'select',
table: 'users',
where: [{ column: 'age', op: 'BETWEEN', values: [25, 40] }],
orderBy: [{ column: 'age', direction: 'DESC' }],
limit: 5
}
]
}, batchCrud)
// 打开后配置 PRAGMA,常见生产设置包括外键、WAL 和 busy timeout。
await callSqlite('configureDatabase', {
name: dbName,
foreignKeys: true,
journalMode: 'WAL',
busyTimeoutMs: 3000,
synchronous: 'NORMAL'
}, configureDatabase)
// 导出前先检查结构,必要时带少量样例行辅助排查。
await callSqlite('inspectDatabase', {
name: dbName,
includeSampleRows: true,
sampleLimit: 2
}, inspectDatabase)
// 健康检查用于确认数据库 quick_check/integrity_check 状态。
await callSqlite('runHealthCheck', {
name: dbName,
fullCheck: false,
includeTableStats: true
}, runHealthCheck)
// App 原生端可验证文件备份恢复,降级端会进入 fail/complete。
const exported = await callSqlite('exportDatabase', { name: dbName }, exportDatabase)
if (exported.ok) {
await callSqlite('importDatabase json', { name: dbName, data: exported.payload.data }, importDatabase)
}
await callSqlite('backupDatabase', { name: dbName, path: backupPath }, backupDatabase)
await callSqlite('restoreDatabase', { name: dbName, path: backupPath }, restoreDatabase)
await callSqlite('importDatabase file', { 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 |
| 9040014 | invalid schema | Schema 声明不合法 |
| 9040015 | schema conflict | 已有 Schema 与声明冲突 |
| 9040016 | index operation failed | 索引创建、删除或结构核对失败 |
| 9040017 | upsert failed | Upsert 参数或执行失败 |
| 9040018 | aggregate failed | 计数或聚合参数、执行失败 |
| 9040019 | pagination failed | 分页参数或执行失败 |
演示组件
<template>
<!-- 在页面中直接使用插件演示组件。 -->
<lizhao-sqlite-pro />
</template>
组件采用 easycom 同名双入口,无需手动 import:
- uni-app:
uni_modules/lizhao-sqlite-pro/components/lizhao-sqlite-pro/lizhao-sqlite-pro.vue - uni-app x:
uni_modules/lizhao-sqlite-pro/components/lizhao-sqlite-pro/lizhao-sqlite-pro.uvue
uni-app x 会优先编译 .uvue 强类型组件;uni-app 继续使用原 .vue,两端共享相同公开 API 和完整能力按钮,但互不混用页面脚本语法。
uni-app x 强类型组件与 uni-app 组件共享同一组公开 API,可按当前项目类型直接使用对应组件文件。
注意事项
- App 端 SQL 语句不要用分号拼接多条命令,多条命令请传数组或使用
batch。 - Web/小程序降级能力只适合演示、轻量缓存和接口连通性测试,不可当作完整 SQLite 文件数据库。
- Web/小程序普通错误对象不会继承
UniError,但会保留errSubject / errCode / errMsg / details,业务侧仍按fail(err)读取错误信息。 - 受限平台或受限 SQL 会进入
fail / complete;插件承诺不伪造成功,也不会把降级结果宣传为完整 SQLite。 exportDatabase返回稳定lizhao-sqlite-pro-json文本,包含schema / tables / rows,可直接作为importDatabase({ data })的输入。importDatabase优先使用dataJSON 导入;传path时 Android/iOS 会优先尝试读取 JSON 文件,普通数据库文件仍可走文件恢复兜底。- JSON 导出适合调试、迁移和小规模数据搬迁;大体量数据库仍建议使用
backupDatabase/restoreDatabase做文件级备份恢复。 - Harmony 使用 rdbStore 原生关系型数据库,
backupDatabase/restoreDatabase走 rdbStore 自带备份恢复;如需跨应用任意路径导入导出,请先用平台文件能力把文件放到应用可访问路径。
作者系列 UTS 插件
以下为已在 DCloud 插件市场上架的作者系列 UTS 插件,可按业务场景组合使用。未列出的插件表示当前未确认公开市场页,后续上架后再补充。
| 插件 | 能力方向 | 插件市场 |
|---|---|---|
lizhao-nfc-pro |
NFC 标签读写、NDEF、IsoDep 与诊断 | 查看插件 |
lizhao-float-window |
悬浮窗、画中画、权限与诊断 | 查看插件 |
lizhao-device-id |
设备标识、隐私策略与诊断 | 查看插件 |
lizhao-scan-pro |
原生扫码、连续扫码、相册识别 | 查看插件 |
lizhao-choose-file |
原生文件选择、上传、进度与取消 | 查看插件 |
lizhao-bg-audio |
背景音频播放、队列、倍速与事件 | 查看插件 |
lizhao-smart-tts |
系统 TTS、云端合成、听书方案 | 查看插件 |
lizhao-share-plus |
系统分享、远程文件下载后分享 | 查看插件 |
lizhao-sqlite-pro |
原生 SQLite、迁移、备份与诊断 | 查看插件 |
lizhao-icon-pro |
SVG 图标组件、多主题与缓存 | 查看插件 |
lizhao-cast-screen |
DLNA 投屏、AirPlay 路由入口 | 查看插件 |
lizhao-call-kit |
电话、短信、通讯录原生能力 | 查看插件 |
lizhao-app-keepalive |
应用保活、唤醒、自愈与报告 | 查看插件 |
lizhao-doc-corrector |
文档扫描、矫正、增强与识别 | 查看插件 |
lizhao-emu-detect |
模拟器环境检测、风险评分与证据 | 查看插件 |
lizhao-gallery-pro |
相册媒体分页、筛选、缩略图与导出 | 查看插件 |
lizhao-video-thumb |
视频封面、批量取帧与 Base64 返回 | 查看插件 |
lizhao-ble |
BLE 扫描、连接、读写、通知与自动重连 | 查看插件 |
lizhao-sse-pro |
SSE、Line、JSONL 与 Raw 流式请求 | 查看插件 |
lizhao-pdf-pro |
PDF 阅读、签批、真实写回与页面处理 | 查看插件 |
lizhao-serial-port |
路径串口、USB 串口、多会话收发与诊断 | 查看插件 |
lizhao-wechat-kit |
微信登录、分享、支付、小程序与客服 | 查看插件 |
lizhao-video-editor |
视频裁剪、压缩、取帧与 FFmpeg/FFprobe | 查看插件 |
lizhao-vpn-pro |
企业 VPN、IKEv2、安全接入与脱敏诊断 | 查看插件 |

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