讲师中心 微信公众号
AI工具推荐 视频效率加速

uni-app怎么使用SQLite本地数据库 uni-app离线存储大数据量【详解】

冬婷君_8489

冬婷君_8489

发布时间:2026-04-04 06:47:14

|

1093人浏览过

|

来源于php中文网

原创

uni-app 中 SQLite 需通过原生插件实现,H5 端用 IndexedDB(iOS 限制严),App 端推荐 DCloud 官方 SQLite 插件;初始化须平台判断并等待就绪,建表加 IF NOT EXISTS;批量插入需事务或单语句多值;路径仅支持 _www/、_documents/、_downloads/,iOS 首次建库必须用 _documents/。

uni-app怎么使用sqlite本地数据库 uni-app离线存储大数据量【详解】

uni-app 里 SQLite 不是开箱即用的

uni-app 官方不支持直接调用 SQLite,uni.setStorage 和 uni.getStorage 只能存小数据(最大 10MB,且序列化后体积膨胀快),遇到几万条记录、带索引查询、事务操作等需求时,纯 localStorage 或 uniStorage 会卡死或崩溃。

真正能用 SQLite 的路径只有一条:通过原生插件桥接。iOS 需用 WKWebView + SQLite.framework,Android 需用 SQLiteOpenHelper 或 Room 封装;uni-app 本身运行在 WebView 或 weex 渲染层,没有底层数据库访问权限。

  • 别试 cordova-sqlite-storage 或 sqlite3-wasm:前者依赖 Cordova 环境(uni-app 不兼容),后者在 H5 端可用但性能差、不支持事务、无法持久化(WASM 内存数据刷新即丢)
  • H5 端只能用 IndexedDB 替代,但 iOS Safari 对 IndexedDB 的稳定性、容量限制(常被限制在 50MB 且无明确提示)比 Android 更严
  • App 端必须上原生插件,推荐用 DCloud 官方插件市场里的 sqlite 插件(如 “SQLite 数据库” 插件 ID:DCloud-uniPlugin-SQLite),它已封装好 Promise 接口和基础 CRUD

App 端 SQLite 插件怎么初始化和建表

插件安装后,不能像 Node.js 那样直接 require('sqlite3')。必须先调用 uni.requireNativePlugin 加载原生模块,再执行 open / exec 操作。

常见错误是忽略平台判断和异步时机:插件在 H5 下返回 undefined,未判空就调 open() 会报 Cannot read property 'open' of undefined;或者在 onLaunch 里没等插件 ready 就建表,导致 no such table。

  • 初始化必须加平台守卫:if (uni.getSystemInfoSync().platform === 'app-android' || uni.getSystemInfoSync().platform === 'app-ios')
  • 建表语句要带 IF NOT EXISTS,否则热更新或重复启动时可能报 table xxx already exists
  • 字段类型别写 INTEGER PRIMARY KEY AUTOINCREMENT:Android 原生 SQLite 对 AUTOINCREMENT 有额外开销,普通 INTEGER PRIMARY KEY 就够用,自增行为不变
const db = uni.requireNativePlugin('SQLite');
db.open({ name: 'mydb.db', path: '_www/db/' }, (res) => {
  db.exec({
    sql: 'CREATE TABLE IF NOT EXISTS user (id INTEGER PRIMARY KEY, name TEXT, age INTEGER)'
  });
});

大数据量插入为什么慢?怎么批量提速

单条 INSERT INTO 执行一次 JS → 原生通信,1000 条就是 1000 次跨桥调用,实测在低端安卓机上耗时超 8 秒。瓶颈不在 SQLite 本身,而在通信链路。

正确做法是把 SQL 拼成一条多值插入语句,或用事务包住所有操作。但要注意:原生插件是否支持 exec 传入多语句数组?多数插件只支持单条 SQL 字符串,且不自动开启事务。

  • 优先用事务:db.beginTransaction() → db.exec(...) × N → db.commitTransaction(),避免每条都刷盘
  • 单条 INSERT 多值写法:INSERT INTO user VALUES (1,'a',20),(2,'b',22),(3,'c',21); —— 注意部分插件对括号嵌套敏感,需测试上限(一般 ≤ 500 组)
  • 别在循环里反复 db.exec:即使开了事务,JS 层频繁调用仍拖慢整体速度
  • 如果数据来自 API,建议先 JSON.stringify 存本地文件,再用原生插件读取解析入库,绕过 JS 层拼接

离线查不出数据?检查这三处硬限制

不是代码写错,而是 SQLite 在 uni-app 环境下有三个隐蔽但致命的路径/权限规则:

  • path 参数不能写绝对路径(如 /data/data/xxx/),必须用相对路径,且仅支持 _www/、_documents/、_downloads/ 三个前缀目录;写错会导致数据库静默创建在错误位置,查不到数据
  • iOS 上 _www/ 目录只读,首次建库必须用 _documents/,否则 open 成功但后续 exec 全失败,错误信息是 SQLITE_CANTOPEN
  • Android 10+ 强制分区存储,插件若没申请 android.permission.WRITE_EXTERNAL_STORAGE(targetSdkVersion MANAGE_EXTERNAL_STORAGE(≥ 30),写库文件会静默失败,日志里只有 open failed 没细节

最稳妥的路径写法:path: '_documents/db/',配合 name: 'cache.db',全平台兼容性最高。

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

SkildArt
SkildArt Hot

SkildArt是一款AI文本写作工具,一站式 AI 视觉创作平台。

立刻MV
立刻MV Hot

立刻MV是一款AI文本写作工具,AI 音乐视频(MV)创作工具。

UP简历
UP简历 Hot

一款AI办公效率工具,主要用于基于AI技术的免费在线简历制作工具,适合需要提升相关任务效率的用户。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

Laper
Laper Hot

Laper是专为编剧、导演和制片人推出的 AI 原生剧本创作工具。

蛙蛙写作

一款AI论文写作工具,主要用于超级AI智能写作助手,适合需要提升相关任务效率的用户。

PixTV
PixTV Hot

PixTV是一款面向AIGC内容创作的AI视频生成工具。

相关专题

更多
python是前端还是后端
python是前端还是后端

Python属于前端也属于后端,其灵活性和丰富的生态系统使得开发人员能够在不同的领域中灵活运用。本专题为大家提供python相关的文章、下载、课程内容,供大家免费下载体验。

2823

2023.08.11

前端如何实现即时通讯
前端如何实现即时通讯

实现即时通讯的方法有WebSocket、Long Polling、Server-Sent Events、WebRTC等等。详细介绍:1、WebSocket,它可以在客户端和服务器之间建立持久连接,实现实时的双向通信,前端可以使用 WebSocket API来创建WebSocket连接,并通过发送和接收消息来实现即时通讯;2、Long Polling,是一种模拟实时通信的技术等等。

6143

2023.10.09

前端和后端的区别
前端和后端的区别

前端关注的是用户界面的设计和交互,而后端则注重数据处理和逻辑控制。想了解更多前端后端的相关内容,可以阅读本专题下面的文章。

7070

2024.03.19

php和前端的关联介绍
php和前端的关联介绍

php既可以作为前端语言,也可以作为后端语言。想了解更多php和前端的相关内容,可以阅读本专题下面的文章。

6878

2024.03.22

前端外包工作内容有哪些
前端外包工作内容有哪些

前端外包工作内容包括:1. 网站和应用程序开发;2. 用户界面和交互设计;3. 用户体验优化;4. 设计和视觉开发;5. 跨浏览器兼容性;6. 性能优化;7. 维护和更新;8. 项目管理和沟通。想了解更多前端的相关内容,可以阅读本专题下面的文章。

983

2024.05.22

大数据分析工具有哪四个
大数据分析工具有哪四个

大数据分析的四个工具分别是rapidminer、Hpcc、Hadoop和Pentaho bi。大数据分析用于从各种来源生成的原始数据中提取有价值的数据。这些数据帮助我们获得有意义的见解、隐藏的模式、未知的相关性、市场趋势等等,具体取决于行业。大数据分析的主要动机是提供有价值的见解,以便为未来做出更好的决策。php中文网为大家带来了大数据分析的相关教程、以及相关文章等内容,供大家免费下载使用。

5976

2023.06.21

Java 大数据处理基础(Hadoop 方向)
Java 大数据处理基础(Hadoop 方向)

本专题聚焦 Java 在大数据离线处理场景中的核心应用,系统讲解 Hadoop 生态的基本原理、HDFS 文件系统操作、MapReduce 编程模型、作业优化策略以及常见数据处理流程。通过实际示例(如日志分析、批处理任务),帮助学习者掌握使用 Java 构建高效大数据处理程序的完整方法。

1269

2025.12.08

大数据专业学习教程
大数据专业学习教程

本专题整合了大数据专业学习相关教程,阅读专题下面的文章了解更多详细内容。

243

2026.01.05

Docker Desktop怎么设置端口映射
Docker Desktop怎么设置端口映射

本专题聚焦Docker Desktop容器端口映射与访问配置,整理从创建容器、设置端口绑定到验证本地服务访问的操作流程。针对端口被占用、映射配置错误、容器服务无法访问等情况,也提供相应的检查方向,方便用户完成端口配置。

0

2026.11.03

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn