更新记录
1.0.0(2026-09-30) 下载此版本
1.0.0 初始化
平台兼容性
uni-app x(5.26)
| Chrome | Safari | Android | iOS | 鸿蒙 | 微信小程序 |
|---|---|---|---|---|---|
| √ | √ | √ | √ | √ | × |
其他
| 多语言 | 暗黑模式 | 宽屏模式 | 蒸汽模式 |
|---|---|---|---|
| × | × | × | √ |
uni-sqlite
基于 UASM 实现的 SQLite 数据库插件,支持 uni-app x 的 App(Android / iOS / Harmony)与 Web 平台。
规范说明
当前 uni-sqlite 的 API 采用 Node.js 规范。
核心同步接口(DatabaseSync、StatementSync)的类名、方法名、参数与返回值,均与 Node.js 内置模块 node:sqlite 保持一致,遵循 Node.js 的数据库访问约定:
- 同步(Sync)API 直接返回结果,不使用回调;
DatabaseSync.prepare()返回StatementSync对象,通过run()/get()/all()执行语句;- 占位符支持匿名参数(
?)与命名参数(:name、@name、$name); - 参数与返回值的类型约束为
null | number | bigint | string | ArrayBuffer; run()返回StatementResultingChanges(包含lastInsertRowid、changes);- 提供
columns()、setReadBigInts()、setReturnArrays()等与 Node.js 一致的元数据及行为控制方法。
在此基础上,插件额外提供了 DatabaseAsync / StatementAsync 两个异步包装类(非 Node.js 规范,为 uni-sqlite 扩展),用于在需要 Promise 风格的场景下调用底层同步接口。两类 API 的方法语义完全一致。
说明:
uasm/index.d.ts中同步接口的签名即按node:sqlite定义,可直接与 Node.js 官方文档对照使用。
快速开始
// 1. 加载 uasm 原生库
const sqlite = await uni.loadUasm("uni_modules/uni-sqlite")
// 2. 创建并打开数据库(与 Node.js 用法一致)
const db = new sqlite.DatabaseSync(":memory:", { open: false })
db.open()
// 3. 执行 SQL
db.exec("CREATE TABLE IF NOT EXISTS demo_users (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL, age INTEGER NOT NULL)")
// 4. 预编译语句并写入
const insert = db.prepare("INSERT INTO demo_users (name, age) VALUES (?, ?)")
const changes = insert.run("user-1", 21)
console.log(changes.lastInsertRowid, changes.changes)
// 5. 查询
const query = db.prepare("SELECT id, name, age FROM demo_users ORDER BY id ASC")
const rows = query.all()
// 6. 关闭数据库
db.close()
API 文档
DatabaseSync(Node.js 规范)
| 方法 | 说明 |
|---|---|
new DatabaseSync(location, options?) |
创建数据库实例。location 支持文件路径或 :memory: |
open(): void |
打开数据库 |
close(): void |
关闭数据库 |
exec(sql): void |
执行一段或多段 SQL |
prepare(sql): StatementSync |
预编译 SQL,返回语句对象 |
location(databaseName?): string \| null |
返回数据库文件位置 |
DatabaseSyncOptions:
| 选项 | 类型 | 说明 |
|---|---|---|
open |
boolean |
构造时是否自动打开,默认 true |
readOnly |
boolean |
是否以只读方式打开 |
enableForeignKeyConstraints |
boolean |
是否启用外键约束 |
enableDoubleQuotedStringLiterals |
boolean |
是否允许双引号字符串字面量 |
timeout |
number |
锁等待超时时间(毫秒) |
StatementSync(Node.js 规范)
| 方法 | 说明 |
|---|---|
run(...params): StatementResultingChanges |
执行写入类语句,返回变更结果 |
get(...params): StatementRow \| undefined |
执行查询并返回首行 |
all(...params): StatementRow[] |
执行查询并返回全部行 |
columns(): StatementColumnMetadata[] |
返回结果列元数据 |
setReadBigInts(enabled): void |
设置读取结果为 BigInt |
setReturnArrays(enabled): void |
设置以数组形式返回行(默认对象) |
setAllowBareNamedParameters(enabled): void |
设置允许命名参数省略前缀 |
setAllowUnknownNamedParameters(enabled): void |
设置允许传入未使用的命名参数 |
参数支持两种形式:匿名参数直接展开传入(run(v1, v2)),命名参数以对象作为首个参数传入(run({ name: v1, age: v2 }, ...))。
DatabaseAsync / StatementAsync(uni-sqlite 扩展)
异步包装类,方法名与同步版一一对应,返回值统一为 Promise:
DatabaseAsync:open/close/exec/prepare/locationStatementAsync:run/get/all/columns/setReadBigInts/setReturnArrays/setAllowBareNamedParameters/setAllowUnknownNamedParameters
const db = new sqlite.DatabaseAsync(":memory:")
await db.exec("CREATE TABLE t (id INTEGER PRIMARY KEY, v TEXT)")
const stmt = await db.prepare("INSERT INTO t (v) VALUES (?)")
await stmt.run("hello")
await db.close()
类型定义
export type SQLInputValue = null | number | bigint | string | ArrayBuffer
export type SQLOutputValue = null | number | bigint | string | ArrayBuffer
export type NamedParameters = Record<string, SQLInputValue>
export type StatementRow = Record<string, SQLOutputValue> | SQLOutputValue[]
export interface StatementResultingChanges {
lastInsertRowid: number | bigint
changes: number | bigint
}
export interface StatementColumnMetadata {
column: string | null
database: string | null
name: string | null
table: string | null
type: string | null
}
注意事项
- 同步 API(
DatabaseSync/StatementSync)为 Node.js 规范接口,请优先与 Node.js 官方文档对照使用。 DatabaseAsync/StatementAsync为 uni-sqlite 扩展,不属于 Node.js 规范,仅提供 Promise 风格封装。- 加载原生库请使用
uni.loadUasm,App 端加载.so/.xcframework,Web 端加载 WASM 实现。

收藏人数:
下载插件并导入HBuilder
下载插件ZIP
赞赏(0)
下载 1516821
赞赏 15
下载 12668221
赞赏 1955
赞赏
京公网安备:11010802035340号