大家好,又见面了,我是你们的朋友全栈君。
【前言】
上一节讲了本地日志,本地数据(文件)的部分,
详见:Electron那些事09:本地数据_uikoo9的博客-CSDN博客
虽然本地日志可以记录日志信息,
本地数据可以记录简单的配置文件,
但是像一些复杂的业务,需要维护一个本地数据库进行查询,本节讲一下本地数据库sqlite
【sqlite】
sqlite是有名的本地数据库,在很多系统中都有应用,SQLite Home Page
当然也有nodejs的版本,一般配套和electron使用,sqlite3 – npm
默认的版本是nodejs版本,electron内可以直接使用,
还有node-webkit版本,这个版本是给node-webkit类环境使用,例如nw框架使用
另外还有sqlcipher版本,就是加密的本地数据库版本
【安装和使用】
安装比较简单
代码语言:javascript复制npm i sqlite3
先看官网一个例子
代码语言:javascript复制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创建即可,
代码语言:javascript复制db.run("CREATE TABLE lorem (info TEXT)");
sqlite支持哪些数据类型呢,可以看这里,Datatypes In SQLite
可以需要注意,可以传入callback函数,如果创建失败,会报错,如果成功会返回null
代码语言:javascript复制 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,返回第一个数据
代码语言:javascript复制// 多次回调
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的时候添加指定系统
代码语言:javascript复制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.插入数据,修改数据,查询数据,删除数据等
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/143944.html原文链接:https://javaforall.cn