【前言】

上一节讲了本地日志,本地数据(文件)的部分,

详见:Electron那些事09:本地数据_uikoo9的博客-CSDN博客

虽然本地日志可以记录日志信息,

本地数据可以记录简单的配置文件,

但是像一些复杂的业务,需要维护一个本地数据库进行查询,本节讲一下本地数据库sqlite

【sqlite】

sqlite是有名的本地数据库,在很多系统中都有应用,SQLite Home Page

当然也有nodejs的版本,一般配套和electron使用,sqlite3 - npm

默认的版本是nodejs版本,electron内可以直接使用,

还有node-webkit版本,这个版本是给node-webkit类环境使用,例如nw框架使用

另外还有sqlcipher版本,就是加密的本地数据库版本

【安装和使用】

安装比较简单

npm i sqlite3

先看官网一个例子

var sqlite3 = require('sqlite3').verbose();
var db = new sqlite3.Database(':memory:');db.serialize(function() {db.run("CREATE TABLE lorem (info TEXT)");var stmt = db.prepare("INSERT INTO lorem VALUES (?)");for (var i = 0; i < 10; i++) {stmt.run("Ipsum " + i);}stmt.finalize();db.each("SELECT rowid AS id, info FROM lorem", function(err, row) {console.log(row.id + ": " + row.info);});
});db.close();

也比较简单,创建db,创建table,插入数据,然后查询,效果如下

【创建数据库】

创建数据库的文档:https://github.com/mapbox/node-sqlite3/wiki/API#new-sqlite3databasefilename-mode-callback

filename,

当传入:memory:时,会将数据库保存在内存中,不会持久化

当传入具体的文件名时,会在对应的位置创建一个文件

例如直接传入test.db时,会在根目录下创建一个test.db文件

当传入具体的文件路径时,会在对应的路径下创建文件,

这样在electron应用下,就可以结合上一节的内容,将db文件创建在应用目录下了

【创建和更新表格】

创建数据库表也比较简单,使用sql创建即可,

db.run("CREATE TABLE lorem (info TEXT)");

sqlite支持哪些数据类型呢,可以看这里,Datatypes In SQLite

可以需要注意,可以传入callback函数,如果创建失败,会报错,如果成功会返回null

    db.run(sql, (e) => {if(e) throw e;});

创建表格详细的文档可以看这里,CREATE TABLE

更新表格可以看这里,ALTER TABLE

创建view,可以看这里,CREATE VIEW

删除表格和view,

DROP TABLE

https://www.sqlite.org/lang_dropview.html

【插入数据】

插入数据需要先使用db.prepare准备好statement语句,然后run,然后finalize写入,如下

详细可以看这里,INSERT

【查询数据】

查询数据,可以看这里,SELECT

这里有三种返回数据的方法,all,each,get

all,返回所有数据

each,多次回调,返回每一个数据

get,返回第一个数据

// 多次回调
db.each('SELECT * FROM t_project', function(err, row) {console.log(row);
});// 返回第一行
db.get('SELECT * FROM t_project', function(err, row) {console.log(row);
});// 返回所有数据
db.all('SELECT * FROM t_project', function(err, row) {console.log(row);
});

【删除数据】

删除数据可以看这里,DELETE

【m1下问题】

sqlite3这个npm包,单独使用没有问题,

但是在mac m1+electron环境下使用会报错,如下

报错提示找不到arm64下的文件,但是sqlite3下有x64版本的,

修复的版本,npm i的时候添加指定系统

npm install --target_arch=arm64

这样即可安装arm64版本的sqlite3

【qiao-sqlite】

将常见的sqlite操作封装了一个npm,qiao-sqlite - npm

create db

create table

drop table

show tables

以及常见的数据操作

insert data

modify data

get data

select data

del data

等操作

【总结】

1.使用sqlite作为本地数据库

2.创建数据库

3.创建和修改表

4.插入数据,修改数据,查询数据,删除数据等

Electron那些事10:本地数据库sqlite相关推荐

  1. 安卓开发:本地数据库SQLite的使用

    上篇文章,讲述了安卓开发中文件存储和SharedPreferences存储方式.这里讲述SQLite数据库存储.我们的通讯录也存在与SQLite数据库中.存放的位置在:/data/data/com.a ...

  2. android 本地数据库sqlite的封装

    单机android   sqlite数据库的实现,这个数据库可与程序一起生成在安装包中 一.下载sqlite3.exe文件 二.运行 cmd 转到sqlite3.exe 所在目录  运行 sqlite ...

  3. android 读取本地数据库db文件(Android sqlite)

    我们知道Android中有四种数据存储方式: SharedPreference存储 content provider SQLite数据库存储 文件存储 今天我们主要说 本地数据库sqlite这种方式, ...

  4. C#中如何使用Sqlite、SqliCe等本地数据库?

    文章开始之前,先看下运行效果和界面: 点击查询项目,弹出Sqlite数据库中的项目表的项目数据.该表一共2条数据,如上图所示. 本篇文章是可供生产过程中实际使用的项目代码,源码价值较高,文章最后会附上 ...

  5. xamarin和mysql_Xamarin.Forms 使用本地数据库之 SQLite

    前言 Xamarin.Forms支持使用SQLite数据库引擎.本文介绍了Xamarin.Forms应用程序如何读取和写入数据到使用SQLite.Net的本地SQLite数据库. 在Xamarin.F ...

  6. flutter可以用 mysql数据库_Flutter 本地数据存储(文件、SharedPreferences 、数据库 sqlite)使用示例...

    Flutter 提供了三种数据持久化方法,即文件.SharedPreferences 与数据库. 文件 Flutter 提供了两种文件存储的目录,即临时(Temporary)目录与文档(Documen ...

  7. flex连接mysql,flex对数据库(sqlite)的操作

    (一)本章主要总结关系数据库引擎(sqlite),同步和异步执行模式,创建数据库和表 Adobe AIR 包括一个基于 SQL 的关系数据库引擎(sqlite),该引擎在运行时中运行,数据以本地方式存 ...

  8. 易语言外部数据库MySQL支持库Access数据库Sqlite数据应用

    语言虽然有自己的数据库, 但易数据库只是以简单的.类似表格的形式组织数据信息,是一个小型数据库管理系统.有时编程中必须使用其它数据库.易语言支持以ODBC方式和ADO方式操作外部数据库. 一.ODBC ...

  9. 安卓微信本地数据库解密与删除聊天记录恢复完全教程

    安卓微信本地数据库解密与删除聊天记录恢复完全教程 前言 正文 经验回顾 新的问题 解决华为旧备份数据导出问题 解密索引数据库 先要解密微信消息库 解密索引库 从索引库恢复被删除的消息 总结 [原创内容 ...

  10. Android逆向_微信本地数据库解密与删除聊天记录恢复完全教程

    # 前言 在电子数据取证过程中,对微信本地数据库的解密.提取与恢复是非常重要的工作内容.本文以华为mate系列手机和最新版的微信(7.0.3)为例,通过总结互联网上已经发表的文章经验,主要针对**华为 ...

最新文章

  1. 解决文字无法缩小的问题
  2. 区块链的安全软肋是什么?
  3. JVM GC参数以及GC算法的应用
  4. python字符串大全_python学习笔记:字符串操作大全
  5. 树莓派上传数据到onenet云平台
  6. 哈哈,这个小游戏很有意思!
  7. Windows平台下使用Active Directory对Subversion进行权限控制(非完美解决方案)
  8. python能做什么-Python到底能做什么?
  9. 数据库mysql项目实战 一
  10. 学习资料 AND ORR
  11. 【Day5.3】鸣沙山月牙泉看日落
  12. java读取文件服务器文件,java读取远程服务器文件
  13. 【docker 安装-环境初始化】
  14. STC12系列单片机的1T模式和12T模式
  15. “21天好习惯“ 第八期 — 8
  16. Get Offer —— 能力素质考核训练
  17. easyAR学习(二)
  18. 超低静态功耗低电压升压电路
  19. LUNA16数据集的百度云链接
  20. win7-64位操作系统下载

热门文章

  1. 交叉路口红绿灯控制程序linux,西门子PLC编程实例详解|十字路口交通灯自动控制系统...
  2. 计算机用户名显示TEMP,windows7登陆创建TEMP临时个人配置文件夹解决方法-系统操作与应用 -亦是美网络...
  3. toastr 简单使用(弹出提示)
  4. 在think-cell数据表中,“撤消” (Ctrl+Z) 操作无效,怎么解决?
  5. 北京理工大学计算机学院放假时间,北理珠这个老师厉害了,竟然利用假期干了这么件事…...
  6. web前端面试题(必背面试题)
  7. linux centos7 录屏,Centos7录屏工具
  8. 特殊的空格-ASCII码值160
  9. PLC编程实现堆栈功能
  10. linux 固态硬盘 分区工具,固态硬盘怎么分区?使用免费分区助手轻松搞定!