Electron那些事10:本地数据库sqlite
【前言】
上一节讲了本地日志,本地数据(文件)的部分,
详见: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相关推荐
- 安卓开发:本地数据库SQLite的使用
上篇文章,讲述了安卓开发中文件存储和SharedPreferences存储方式.这里讲述SQLite数据库存储.我们的通讯录也存在与SQLite数据库中.存放的位置在:/data/data/com.a ...
- android 本地数据库sqlite的封装
单机android sqlite数据库的实现,这个数据库可与程序一起生成在安装包中 一.下载sqlite3.exe文件 二.运行 cmd 转到sqlite3.exe 所在目录 运行 sqlite ...
- android 读取本地数据库db文件(Android sqlite)
我们知道Android中有四种数据存储方式: SharedPreference存储 content provider SQLite数据库存储 文件存储 今天我们主要说 本地数据库sqlite这种方式, ...
- C#中如何使用Sqlite、SqliCe等本地数据库?
文章开始之前,先看下运行效果和界面: 点击查询项目,弹出Sqlite数据库中的项目表的项目数据.该表一共2条数据,如上图所示. 本篇文章是可供生产过程中实际使用的项目代码,源码价值较高,文章最后会附上 ...
- xamarin和mysql_Xamarin.Forms 使用本地数据库之 SQLite
前言 Xamarin.Forms支持使用SQLite数据库引擎.本文介绍了Xamarin.Forms应用程序如何读取和写入数据到使用SQLite.Net的本地SQLite数据库. 在Xamarin.F ...
- flutter可以用 mysql数据库_Flutter 本地数据存储(文件、SharedPreferences 、数据库 sqlite)使用示例...
Flutter 提供了三种数据持久化方法,即文件.SharedPreferences 与数据库. 文件 Flutter 提供了两种文件存储的目录,即临时(Temporary)目录与文档(Documen ...
- flex连接mysql,flex对数据库(sqlite)的操作
(一)本章主要总结关系数据库引擎(sqlite),同步和异步执行模式,创建数据库和表 Adobe AIR 包括一个基于 SQL 的关系数据库引擎(sqlite),该引擎在运行时中运行,数据以本地方式存 ...
- 易语言外部数据库MySQL支持库Access数据库Sqlite数据应用
语言虽然有自己的数据库, 但易数据库只是以简单的.类似表格的形式组织数据信息,是一个小型数据库管理系统.有时编程中必须使用其它数据库.易语言支持以ODBC方式和ADO方式操作外部数据库. 一.ODBC ...
- 安卓微信本地数据库解密与删除聊天记录恢复完全教程
安卓微信本地数据库解密与删除聊天记录恢复完全教程 前言 正文 经验回顾 新的问题 解决华为旧备份数据导出问题 解密索引数据库 先要解密微信消息库 解密索引库 从索引库恢复被删除的消息 总结 [原创内容 ...
- Android逆向_微信本地数据库解密与删除聊天记录恢复完全教程
# 前言 在电子数据取证过程中,对微信本地数据库的解密.提取与恢复是非常重要的工作内容.本文以华为mate系列手机和最新版的微信(7.0.3)为例,通过总结互联网上已经发表的文章经验,主要针对**华为 ...
最新文章
- 解决文字无法缩小的问题
- 区块链的安全软肋是什么?
- JVM GC参数以及GC算法的应用
- python字符串大全_python学习笔记:字符串操作大全
- 树莓派上传数据到onenet云平台
- 哈哈,这个小游戏很有意思!
- Windows平台下使用Active Directory对Subversion进行权限控制(非完美解决方案)
- python能做什么-Python到底能做什么?
- 数据库mysql项目实战 一
- 学习资料 AND ORR
- 【Day5.3】鸣沙山月牙泉看日落
- java读取文件服务器文件,java读取远程服务器文件
- 【docker 安装-环境初始化】
- STC12系列单片机的1T模式和12T模式
- “21天好习惯“ 第八期 — 8
- Get Offer —— 能力素质考核训练
- easyAR学习(二)
- 超低静态功耗低电压升压电路
- LUNA16数据集的百度云链接
- win7-64位操作系统下载
热门文章
- 交叉路口红绿灯控制程序linux,西门子PLC编程实例详解|十字路口交通灯自动控制系统...
- 计算机用户名显示TEMP,windows7登陆创建TEMP临时个人配置文件夹解决方法-系统操作与应用
-亦是美网络...
- toastr 简单使用(弹出提示)
- 在think-cell数据表中,“撤消” (Ctrl+Z) 操作无效,怎么解决?
- 北京理工大学计算机学院放假时间,北理珠这个老师厉害了,竟然利用假期干了这么件事…...
- web前端面试题(必背面试题)
- linux centos7 录屏,Centos7录屏工具
- 特殊的空格-ASCII码值160
- PLC编程实现堆栈功能
- linux 固态硬盘 分区工具,固态硬盘怎么分区?使用免费分区助手轻松搞定!