更新记录

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 使用系统 SQLite3 C 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 自带备份恢复;如需跨应用任意路径导入导出,请先用平台文件能力把文件放到应用可访问路径。

隐私、权限声明

1. 本插件需要申请的系统权限列表:

Android/iOS/Harmony 使用应用沙盒文件读写;Web/小程序按平台能力矩阵降级

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

本地数据库名称、SQL 语句、查询结果、诊断日志

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率: