uni-app集成使用SQLite

一、打开uni-app中SQLite

二、封装sqlite.js 

module.exports = {dbName: 'chat', // 数据库名称dbPath: '_doc/chat.db', // 数据库地址,推荐以下划线为开头   _doc/xxx.db/*** @Description: 创建数据库 或 有该数据库就打开* @author: ZXL* @createTime: 2023-10-12 09:23:10* @Copyright by 蓝创科技有限公司*/openSqlite() {return new Promise((resolve, reject) => {// 打开数据库plus.sqlite.openDatabase({name: this.dbName,path: this.dbPath,success(e) {resolve(e); },fail(e) {reject(e); }})})},/*** @Description: 判断数据库是否打开  数据库打开了就返回 true,否则返回 false* @author: ZXL* @createTime: 2023-10-12 08:43:03* @Copyright by 蓝创科技有限公司*/isOpen() {var open = plus.sqlite.isOpenDatabase({name: this.dbName,  // 数据库名称path: this.dbPath  // 数据库地址})return open;},/*** @Description: 创建表(executeSql是执行增删改等操作的SQL语句)* @author: ZXL* @createTime: 2023-10-12 08:43:03* @Copyright by 蓝创科技有限公司*/ExecuteSQL(sql) {return new Promise((resolve, reject) => {plus.sqlite.executeSql({name: this.dbName,sql: sql,success(e) {resolve(e);},fail(e) {reject(e);}})})},/*** @Description: 查询表数据* @author: ZXL* @createTime: 2023-10-12 08:52:15* @Copyright by 蓝创科技有限公司*/getTable(dbTable){return new Promise((resolve, reject) => {plus.sqlite.selectSql({name: this.dbName,sql: `SELECT * FROM ${dbTable}`,success(e) {resolve(e);},fail(e) {console.log(e)reject(e);}})})},/*** @Description: 查询数据库所有表* @author: ZXL* @createTime: 2023-10-12 09:01:05* @Copyright by 蓝创科技有限公司*/QueryAllTables(){return new Promise((resolve, reject) => {plus.sqlite.selectSql({name: this.dbName,sql: "SELECT * FROM sqlite_master WHERE type='table'",success(e) {resolve(e);},fail(e) {console.log(e)reject(e);}})})},/*** @Description: 查询数据库下的所有表* @author: ZXL* @createTime: 2023-10-12 09:20:33* @Copyright by 蓝创科技有限公司*/selectTableName(){return new Promise((resolve, reject) => {plus.sqlite.selectSql({name: this.dbName,sql: "select * FROM chat where type='table'",success(e) {resolve(e);},fail(e) {console.log(e)reject(e);}})})},/*** @Description: 新增数据* @author: ZXL* 向表格里添加数据 sql:'INSERT INTO dbTable VALUES('x','x','x')'   对应新增* 或者 sql:'INSERT INTO dbTable ('x','x','x') VALUES('x','x','x')'   具体新增* 插入 INSERT INTO  、 dbTable 是表名、根据表头列名插入列值* @createTime: 2023-10-12 10:21:32* @Copyright by 蓝创科技有限公司*///使用// let arr = [//     {id:121,dept_id: '100',dept_name: '你好呀'},// 	   {id:332,dept_id: '200',dept_name: '你好呀'},// ]// arr.map((item) => {//     let condition = "'id','dept_id','dept_name'"//     let data = `'${item.id}','${item.dept_id}','${item.dept_name}'`//     DB.insertTableData('表名',数据,字段).then((res) => {})// 	  .catch((error) => {// 	    console.log('失败', error)// 	  })// })insertTableData(dbTable, data, condition) {// 判断有没有传参if (dbTable !== undefined && data !== undefined) {// 判断传的参是否有值var bol = (JSON.stringify(data) == "{}");if (!bol) {if (condition == undefined) var sql = `INSERT INTO ${dbTable} VALUES('${data}')`;else var sql = `INSERT INTO ${dbTable} (${condition}) VALUES(${data})`;return new Promise((resolve, reject) => {// 表格添加数据plus.sqlite.executeSql({name: this.dbName,sql: sql,success(e) {resolve(e);},fail(e) {reject(e);}})})} else {return new Promise((resolve, reject) => { reject("错误添加") })}} else {return new Promise((resolve, reject) => { reject("错误添加") })}},/*** @Description: 数据库建表* @author: ZXL* 数据库建表 sql:'CREATE TABLE IF NOT EXISTS dbTable("id" varchar(50),"name" TEXT) * 创建 CREATE TABLE IF NOT EXISTS 、 dbTable 是表名,不能用数字开头、括号里是表格的表头* @createTime: 2023-10-12 09:26:44* @Copyright by 蓝创科技有限公司*/// 使用// DB.createTable('bus_mzpy','"id" INTEGER PRIMARY KEY AUTOINCREMENT,"mzpy_name" TEXT ,"dept_id" INTEGER ,"dept_name" TEXT ,"mzpy_concent" TEXT')createTable(dbTable, data) {return new Promise((resolve, reject) => {// executeSql: 执行增删改等操作的SQL语句plus.sqlite.executeSql({name: this.dbName,sql: `CREATE TABLE IF NOT EXISTS ${dbTable}(${data})`,success(e) {resolve(e);},fail(e) {reject(e);}})})},/*** @Description: 数据库删表 sql:'DROP TABLE dbTable'* @author: ZXL* @createTime: 2023-10-12 09:28:46* @Copyright by 蓝创科技有限公司*/dropTable(dbTable) {return new Promise((resolve, reject) => {plus.sqlite.executeSql({name: this.dbName,sql: `DROP TABLE ${dbTable}`,success(e) {resolve(e);},fail(e) {reject(e);}})})},/*** @Description: 根据条件向表里插入数据、更新或覆盖* @author: ZXL*  根据条件向表格里添加数据  有数据更新、无数据插入* (建表时需要设置主键) 例如 --- "roomid" varchar(50) PRIMARY KEY* @createTime: 2023-10-12 09:31:19* @Copyright by 蓝创科技有限公司*/insertOrReplaceData(dbTable, data, condition) {// 判断有没有传参if (dbTable !== undefined && data !== undefined) {if (condition == undefined) var sql = `INSERT OR REPLACE INTO ${dbTable} VALUES('${data}')`;else var sql = `INSERT OR REPLACE INTO ${dbTable} (${condition}) VALUES(${data})`;return new Promise((resolve, reject) => {// 表格添加数据plus.sqlite.executeSql({name: this.dbName,sql: sql,success(e) {resolve(e);},fail(e) {reject(e);}})})} else {return new Promise((resolve, reject) => { reject("错误添加") })}},/*** @Description: 表里查询数据* @author: ZXL* 查询获取数据库里的数据 sql:'SELECT * FROM dbTable WHERE lname = 'lvalue''* 查询 SELECT * FROM 、 dbTable 是表名、 WHERE 查找条件 lname,lvalue 是查询条件的列名和列值* @createTime: 2023-10-12 09:44:08* @Copyright by 蓝创科技有限公司*/ selectTableData(dbTable, lname, lvalue, cc, dd) {if (dbTable !== undefined) {let sql;// 第一个是表单名称,后两个参数是列表名,用来检索// 两个检索条件if (lname !== undefined && cc !== undefined) sql=`SELECT * FROM ${dbTable} WHERE ${lname} = '${lvalue}' AND ${cc} = '${dd}'`;// 一个检索条件if (lname !== undefined && cc == undefined) sql = `SELECT * FROM ${dbTable} WHERE ${lname} = '${lvalue}'`;if (lname == undefined) sql = `SELECT * FROM ${dbTable}`;return new Promise((resolve, reject) => {// 表格查询数据  执行查询的SQL语句plus.sqlite.selectSql({name: this.dbName,sql: sql,success(e) {resolve(e);},fail(e) {reject(e);}})})} else {return new Promise((resolve, reject) => { reject("错误查询") });}},/*** @Description: 表里删除数据* @author: ZXL* 删除表里的数据 sql:'DELETE FROM dbTable WHERE lname = 'lvalue''* 删除 DELETE FROM 、 dbTable 是表名、 WHERE 查找条件 lname,lvalue 是查询条件的列名和列值* @createTime: 2023-10-12 09:40:37* @Copyright by 蓝创科技有限公司*/deleteTableData(dbTable, lname, lvalue, ww, ee) {if(dbTable !== undefined){let sql;if(lname == undefined){sql = `DELETE FROM ${dbTable}`;}else{if (ww !== undefined) {// 两个检索条件sql = `DELETE FROM ${dbTable} WHERE ${lname} = '${lvalue}' AND ${ww} = '${ee}'`;} else {// 一个检索条件sql = `DELETE FROM ${dbTable} WHERE ${lname} = '${lvalue}'`;}}return new Promise((resolve, reject) => {// 删除表数据plus.sqlite.executeSql({name: this.dbName,sql: sql,success(e) {resolve(e);},fail(e) {reject(e);}})})} else {return new Promise((resolve, reject) => { reject("错误删除") });}},/*** @Description: 表里修改数据* @author: ZXL* 修改数据表里的数据 sql:"UPDATE dbTable SET 列名 = '列值',列名 = '列值' WHERE lname = 'lvalue'"* 修改 UPDATE 、 dbTable 是表名, data: 要修改的列名=修改后列值, lname,lvalue 是查询条件的列名和列值* @createTime: 2023-10-12 09:37:59* @Copyright by 蓝创科技有限公司*/updateTableData(dbTable, data, lname, lvalue) {let sql;if (lname == undefined) sql = `UPDATE ${dbTable} SET ${data}`;else sql = `UPDATE ${dbTable} SET ${data} WHERE ${lname} = '${lvalue}'`;// WHERE 前面是要修改的列名、列值,后面是条件的列名、列值return new Promise((resolve, reject) => {// 修改表数据plus.sqlite.executeSql({name: this.dbName,sql: sql,success(e) {resolve(e);},fail(e) {reject(e);}})})},/*** @Description: 获取指定数据条数* @author: ZXL* 获取指定数据条数  sql:"SELECT * FROM dbTable ORDER BY 'id' DESC LIMIT 15 OFFSET 'num'"* dbTable 表名, ORDER BY 代表排序默认正序, id 是排序的条件 DESC 代表倒序,从最后一条数据开始拿* LIMIT 15 OFFSET '${num}',这句的意思是跳过 num 条拿 15 条数据, num 为跳过多少条数据是动态值* 例 初始num设为0,就从最后的数据开始拿15条,下次不拿刚获取的数据,所以可以让num为15,这样就能一步一步的拿完所有的数据* @createTime: 2023-10-12 09:33:43* @Copyright by 蓝创科技有限公司*/pullSQL(dbTable, id, num) {return new Promise((resolve, reject) => {plus.sqlite.selectSql({name: this.dbName,sql: `SELECT * FROM ${dbTable} ORDER BY '${id}' DESC LIMIT 15 OFFSET '${num}'`,success(e) {resolve(e);},fail(e) {reject(e);}})})},/*** @Description: 关闭数据库* @author: ZXL* @createTime: 2023-10-12 09:23:56* @Copyright by 蓝创科技有限公司*/closeSqlite() {return new Promise((resolve, reject) => {plus.sqlite.closeDatabase({name: this.dbName,success(e) {resolve(e);},fail(e) {reject(e);}})})},
}

三、使用 

import DB from '@/utils/sqlite.js'类似这样
DB.selectTableData('','','').then((res) => {}).catch((error) => {console.log('查询失败', error)
})

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/161078.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SQ4840EY-T1_GE3具有低导通电阻和低电压降 汽车级 N沟道功率MOSFET

SQ4840EY-T1_GE3是一款高性能的车规级电子IC芯片,它具有多种功能和特点,适用于各种电子设备和应用领域。采用了先进的工艺技术,具有高性能和稳定的特点。它采用了先进的封装技术,能够在广泛的温度范围内正常工作,适应各…

【Java基础面试十四】、 封装的目的是什么,为什么要有封装?

文章底部有个人公众号:热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享? 踩过的坑没必要让别人在再踩,自己复盘也能加深记忆。利己利人、所谓双赢。 面试官: 封装的目的是什么&…

docker搭建nginx+php-fpm

docker run --name nginx -p 8898:80 -d nginx:1.20.2-alpine# 将容器nginx.conf文件复制到宿主机 docker cp nginx:/etc/nginx/nginx.conf /usr/local/nginx/conf/nginx.conf# 将容器conf.d文件夹下内容复制到宿主机 docker cp nginx:/etc/nginx/conf.d /usr/local/nginx/conf…

【Python-Django】基于TF-IDF算法的医疗推荐系统复现过程

复现步骤 step1: 修改原templates路径,删除,将setting.py中的路径置空 step2: 注册app python manage.py startapp [app名称]在app目录下创建static和templates目录 step3: 将项目中的资源文化进行拷贝 step4&#…

VUE整合Echarts实现简单的数据可视化

文章目录 前言 一、Echarts的安装 二、可视化渲染 1.柱状图 2.饼图 3.主题的下载 总结 前言 ECharts是一款功能强大的前端数据可视化库,支持多种图表类型和统计图表、地理数据可视化、关系型数据展示、多维数据处理和商业智能功能。通过广泛的图表类型、统计分析…

通达OA 2016网络智能办公系统 handle.php SQL注入漏洞

一、漏洞描述 北京通达信科科技有限公司通达OA2016网络智能办公系统 handle.php 存在sql注入漏洞,攻击者可利用此漏洞获取数据库管理员权限,查询数据、获取系统信息,威胁企业单位数据安全。 二、网络空间搜索引擎查询 fofa查询 app"T…

Leetcode刷题解析——最大连续1的个数

1. 题目链接:1004. 最大连续1的个数 III 2. 题目描述: 给定一个二进制数组 nums 和一个整数 k,如果可以翻转最多 k 个 0 ,则返回 数组中连续 1 的最大个数 。 示例 1: 输入:nums [1,1,1,0,0,0,1,1,1,1,0]…

6.6 图的应用

思维导图: 6.6.1 最小生成树 ### 6.6 图的应用 #### 主旨:图的概念可应用于现实生活中的许多问题,如网络构建、路径查询、任务排序等。 --- #### 6.6.1 最小生成树 **概念**:要在n个城市中建立通信联络网,则最少需…

【Java 进阶篇】JavaScript 自动跳转首页案例

在这篇博客中,我们将创建一个JavaScript案例,演示如何自动跳转到网站的首页。这种自动跳转通常用于欢迎页面或广告页面等场景。我们将从头开始创建这个案例,逐步介绍相关的JavaScript知识,让初学者也能理解并实现这个功能。 1. 什…

进程的虚拟地址空间

一、 对于C/C程序员,我们看到的程序中的地址,都不是物理地址,而是操作系统映射的虚拟地址/线性地址,每一个进程都映射了同样结构的虚拟地址空间,让进程以为自己在独享内存资源,下图是以Linux下32位操作系统…

凉鞋的 Unity 笔记 201. 第三轮循环:引入变量

201. 第三轮循环:引入变量 在这一篇,我们进行第三轮 编辑-测试 循环。 在之前我们编写了 输出 Hello Unity 的脚本,如下: using System.Collections; using System.Collections.Generic; using UnityEngine;public class FirstGameObject …

01-10 周二 PyCharm远程Linux服务器配置进行端点调试

01-10 周二 PyCharm远程Linux服务器配置 时间版本修改人描述2023年1月10日14:04:15V0.1宋全恒新建文档2023年2月6日11:03:45V0.2宋全恒添加快捷指令别名的实现方便虚拟环境的切换 简介 使用 PyCharm,您可以使用位于另一台计算机(服务器)上的解释器调试应用程序。 …

Python---if选择判断结构、嵌套结构(if elif else)

1、if选择判断结构作用 if 英 /ɪf/ conj. (表条件)如果;(表假设)要是,假如;无论何时;虽然,即使;(用于间接疑问)是否&#xff1b…

【配置环境】SQLite数据库安装和编译以及VS下C++访问SQLite数据库

一,环境 Windows 11 家庭中文版,64 位操作系统, 基于 x64 的处理器SQLite - 3.43.2Microsoft Visual Studio Community 2022 (64 位) - Current 版本 17.5.3 二,SQLite简介 简要介绍 SQLite(Structured Query Language for Lite&a…

windows常用命令

一.文件操作 dir:查看文件当前路径目录列表 cd .. :返回上一级目录 cd 路径:进入路径

2023年10月wxid转微信号方法

在9月份tx做了一次调整,以前很多wxid转微信号的办法都失效了。 今天分析了一下微信。捣鼓了一下午。现在已经实现了wxid转微信号。不管对方是否在群里,是否是你的好友 都能转。一分钟出60条左右。 我们先创建一个文本文件,将要转换wxid 放进…

【Mysql】Innodb数据结构(四)

概述 MySQL 服务器上负责对表中数据的读取和写入工作的部分是存储引擎 ,而服务器又支持不同类型的存储引擎,比如 InnoDB 、MyISAM 、Memory 等,不同的存储引擎一般是由不同的人为实现不同的特性而开发的,真实数据在不同存储引擎中…

手把手教你随机合并全部视频添加同一个文案的方法

今天,我将为你介绍一个简单易行的方法,只需两个步骤,让你轻松实现批量合并视频。 1. 在浏览器中搜索并下载“固乔智剪软件”,然后打开软件。这款软件是一款专业的视频剪辑工具,它提供了多种视频剪辑功能,包…

【网络协议】聊聊从物理层到MAC层 ARP 交换机

物理层 物理层其实就是电脑、交换器、路由器、光纤等。组成一个局域网的方式可以使用集线器。可以将多台电脑连接起来,然后进行将数据转发给别的端口。 数据链路层 Hub其实就是广播模式,如果A电脑发出一个包,B、C电脑也可以收到。那么数据…

解决 MyBatis 一对多查询中,出现每组元素只有一个,总组数与元素数总数相等的问题

文章目录 问题简述场景描述问题描述问题原因解决办法 问题简述 笔者在使用 MyBatis 进行一对多查询的时候遇到一个奇怪的问题。对于笔者的一对多的查询结果,出现了这样的一个现象:原来每个组里有多个元素,查询目标是查询所查的组,…