最近看到一个使用js来操作sqlite数据库的,测试了一下,具体使用的是

js操作类: https://github.com/kripken/sql.js/(sqlite js 驱动)

异步请求:http://npm.taobao.org/package/axios(异步请求插件,只有12.6k)

这里使用的js驱动是和服务器端使用方法一致,sql标准语法都支持,可以用第三方管理工具来管理数据文件

目前我使用的是 Navicat Premium 12

下面是测试的源代码:

1. 数据库sql(自己运行生成test.db,和html页面放在同一目录下):

PRAGMA foreign_keys = false;-- ----------------------------
-- Table structure for sys_user
-- ----------------------------
DROP TABLE IF EXISTS "sys_user";
CREATE TABLE "sys_user" ("id" bigint(11) NOT NULL,"role_id" bigint(11) NOT NULL,"user_name" varchar(255) NOT NULL,"user_pass" varchar(64) NOT NULL,"nick_name" varchar(255) NOT NULL,"register_time" datetime NOT NULL,"status" int(11) NOT NULL DEFAULT 1,"sort" decimal(16,2) NOT NULL DEFAULT 0.00,PRIMARY KEY ("id")
)
WITHOUT ROWID;-- ----------------------------
-- Records of sys_user
-- ----------------------------
INSERT INTO "sys_user" VALUES (1, 1, 'lxw', 123456, '李兴武', '2019-01-07 11:22:30', 0, 1);
INSERT INTO "sys_user" VALUES (2, 1, 'lwq', 123456, '浏览器', '2019-01-08 11:11:11', 0, 2);
INSERT INTO "sys_user" VALUES (3, 1, 'tjun', 123123, '田俊', '2018-01-01 12:22:35', 1, 3);
INSERT INTO "sys_user" VALUES (4, 1, 'tttt', 123456, '通天塔', '', 1, 4);-- ----------------------------
-- Indexes structure for table sys_user
-- ----------------------------
CREATE UNIQUE INDEX "pk"
ON "sys_user" ("id" COLLATE BINARY ASC
);PRAGMA foreign_keys = true;

2. html(可直接复制下来运行)

<!DOCTYPE html>
<html lang="zh-cn">
<head><meta charset="UTF-8"><title>sqlite数据库测试</title><script src="https://unpkg.com/axios/dist/axios.min.js"></script><script src="https://cdn.bootcss.com/sql.js/0.5.0/js/sql-optimized.js"></script>
</head>
<body><p>sqlite数据库测试,使用js操作sqlite数据库</p>
<p>这里使用axios读取test.db文件,进行初始化数据库连接,</p>
<p>查询速度不快,除非不想写后台要直接操作数据库,不然没什么用。</p>
<p>具体效果可查看代码和控制台打印的数据。</p><script>// 读取数据库数据axios.get("test.db", {responseType: 'arraybuffer'}).then(function (response) {let db = new window.SQL.Database(new Uint8Array(response.data));// 执行查询let s = new Date().getTime();let r = db.exec("SELECT * FROM sys_user WHERE status = 1;");let e = new Date().getTime();console.info("查询数据耗时:" + (e - s) + "ms");// 解析数据let obj = dbToObj(r);console.info(obj);}).catch(function (error) {console.info(error);});// 方法传入两个数组,第一个数组为key,第二个数组对应位置为value,此方法在Python中为zip()函数。const ArraytoObj = (keys = [], values = []) => {if (keys.length === 0 || values.length === 0) return {};const len = keys.length > values.length ? values.length : keys.length;const obj = {};for (let i = 0; i < len; ++i) {obj[keys[i]] = values[i]}return obj;};// 转驼峰表示:func.camel('USER_ROLE',true) => UserRole// 转驼峰表示:func.camel('USER_ROLE',false) => userRoleconst camel = (str, firstUpper = false) => {let ret = str.toLowerCase();ret = ret.replace(/_([\w+])/g, function (all, letter) {return letter.toUpperCase();});if (firstUpper) {ret = ret.replace(/\b(\w)(\w*)/g, function ($0, $1, $2) {return $1.toUpperCase() + $2;});}return ret;};// 把数组里面的所有转化为驼峰命名const camelArr = (arrs = []) => {let _arrs = [];arrs.map(function (item) {_arrs.push(camel(item));});return _arrs;};// 读取数据库// 1.把columns转化为驼峰;// 2.把columns和values进行组合;const dbToObj = (_data = {}) => {let _res = [];_data.map(function (item) {let _columns = camelArr(item.columns);item.values.map(function (values) {_res.push(ArraytoObj(_columns, values));});});return _res;};
</script>
</body>
</html>

js -- 操作sqlite数据库相关推荐

  1. Electron中使用sql.js操作SQLite数据库

    推荐sql.js--一款纯js的sqlite工具. 一.关于sql.js sql.js(https://github.com/kripken/sql.js)通过使用Emscripten编译SQLite ...

  2. python读数据库的通信协议是,Python操作SQLite数据库过程解析

    SQLite是一款轻型的数据库,是遵守ACID的关系型数据库管理系统. 不像常见的客户-服务器范例,SQLite引擎不是个程序与之通信的独立进程,而是连接到程序中成为它的一个主要部分.所以主要的通信协 ...

  3. 使用SQLite数据库存储数据(1)-操作SQLite数据库

    在使用SQLite API函数如有疑问,可以参考官方函数文档: http://www.sqlite.org/c3ref/funclist.html 操作SQLite数据库 SQLite数据库是文件数据 ...

  4. js修改mysql数据库数据_Node.js操作mysql数据库增删改查

    关于node.js操作mysql数据库的相关介绍请阅读全文吧.下文介绍的非常详细,具体内容如下所示: 安装mysql模块 npm install mysql 数据库准备 mysql server所在的 ...

  5. sqlite mysql php_PHP实现的简单操作SQLite数据库类与用法示例

    本文实例讲述了PHP实现的简单操作SQLite数据库类与用法.分享给大家供大家参考,具体如下: SQLite是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入式的,而且目前已 ...

  6. PC软件开发技术之三:C#操作SQLite数据库

    我们在开发应用是经常会需要用到一些数据的存储,存储的方式有多种,使用数据库是一种比较受大家欢迎的方式.但是对于一些小型的应用,如一些移动APP,通常的数据库过于庞大,而轻便的SQLite则能解决这一问 ...

  7. python数据库sqlite3_Python 操作 SQLite 数据库

    本文字数:3808 字 阅读本文大概需要:10 分钟 写在之前 SQLite 是一个小型的关系型数据库,它最大的特点在于不需要单独的服务.零配置.我们在之前讲过的两个数据库,不管是 MySQL 还是 ...

  8. Linux C语言操作SQLite数据库

    1. SQLite数据库特点 (1)SQLite数据库是开源的嵌入式数据库,无需独立的数据库引擎,直接嵌入到应用程序进程中,因此,通过API,应用程序可以直接操作它. (2)事务的处理是原子的,一致的 ...

  9. C#操作SQLite数据库

    我们在开发应用是经常会需要用到一些数据的存储,存储的方式有多种,使用数据库是一种比较受大家欢迎的方式.但是对于一些小型的应用,如一些移动APP,通常的数据库过于庞大,而轻便的SQLite则能解决这一问 ...

最新文章

  1. 不同频率数据的处理方法
  2. 架构师一般做到多少岁_《迷茫中的我们该如何突破瓶颈——成长为一名架构师》...
  3. libevent编程疑难解答
  4. Python调用百度接口(情感倾向分析)和讯飞接口(语音识别、关键词提取)处理音频文件...
  5. FrameBuffer编程二(简单的程序上)
  6. three几何线在mapbox地图显示
  7. 求数组中最小的k个数
  8. java Spring菜鸟教程,只需一篇文章吃透Java多线程技术
  9. 机器视觉最常见的五大典型应用
  10. 正二十面体制作步骤介绍
  11. winrar解压器_最好的解压软件,没有之一
  12. java爬虫爬取天眼查_Java爬虫爬取京东商品信息
  13. 以太坊源码分析(37)eth以太坊协议分析
  14. android 合并分区说明,Android系统手机sd卡分区后合并图文详解
  15. 解决Linux图片加水印(Graphics2D)出现方框的问题
  16. 水墨风的山水大坝3d可视化场景
  17. 02_计算机网络笔记-网络拓扑-交换机-VLAN
  18. 【SpringBoot学习】39、SpringBoot 集成 wxJava 微信小程序:订单支付
  19. 数据分析系列:绩效(效率)评价与python实现(层析分析、topsis、DEA)
  20. matlab画伯德图开环程序,matlab伯德图开环闭环

热门文章

  1. 在线编辑+私有化部署,这款知识管理神器赞爆了
  2. JAVA POI通用Excel导入模板
  3. Excel获取当前文件所在目录
  4. 以下说法正确的是。(选择2项)
  5. 为什么股权激励比薪酬激励更有效
  6. LeetCode:17.17.多次搜索
  7. es搜索大量多个索引
  8. android studio 碎片,Android studio之碎片学习
  9. 2001-2011年SCI收录中国学者发表的自动化与控制系统学科论文发文量前50期刊
  10. C语言GDF中是什么作用,深度解密格力GDF-40X21C怎么样呢?质量好不好?真相揭秘必看...