electron使用sqlite数据库
在electron
里面使用sqlite3
,其实就是在node
里面使用sqlite3
,两者的基本使用方法是一致的。只不过,在electron
里面,sql
语句可以在主进程中使用,也可以在渲染进程(即传统意义上的网页)上使用,在这点上,是稍稍有点区别。
本文相关的环境安装文章是:https://newsn.net/say/electron-install-sqlite3.html 。如果您还没有安装好环境,请参照相关文章先安装好环境。在本文中,苏南大叔将要讲述在electron
中,sqlite3
的增删改查的小例子。本文中的相关api
函数,都可以在文末的链接中找到函数说明。
初始化数据库连接
sqlite3
的数据库初始化,需要指定一下数据库的位置。这个数据库文件可以是个实体的文件数据库,也可以是一个仅存在于内存中的虚无的数据库。
1:初始化一个仅仅存在于内存中的数据库。
程序关闭的话,数据就会消失,并不会保存下来。因为数据会丢失,所以使用的情况也不是很多。
var sqlite3 = require('sqlite3').verbose();var db = new sqlite3.Database(':memory:');
2:初始化一个独立文件。
大部分情况下,我们都是使用这种初始化链接的方法的。
var sqlite3 = require('sqlite3').verbose();const path = require('path');
var db = new sqlite3.Database(path.join(__dirname, 'db.db'));
//var db = new sqlite3.Database('db.db');
electron 搭配 sqlite 数据库之数据交互(图3-1)
electron 搭配 sqlite 数据库之数据交互(图3-2)
electron 搭配 sqlite 数据库之数据交互(图3-3)
初始化数据结构及数据
下面的例子是个官方给出的初始化数据的例子,大家先看看。函数名都有些奇怪,不过我们可以先照猫画虎。
db.serialize(function() {db.run("CREATE TABLE IF NOT EXISTS lorem (info TEXT)");
//db.run("delete from lorem");
var stmt = db.prepare("INSERT INTO lorem VALUES (?)");
for (var i = 0; i < 10; i++) {
stmt.run("Ipsum " + i);
}
stmt.finalize();
});
上述代码的运行结果是,建立了一个数据表,然后插入了十条数据。注意,上述代码在『虚拟』数据库的情况下,每次数据表里面都只有十条数据。而对于数据库文件固化下来的情况,第二次运行的时候,数据表的总数据量是二十条了。
https://github.com/mapbox/node-sqlite3/wiki/Control-Flow
https://github.com/mapbox/node-sqlite3/wiki/API#databaserunsql-param--callback
https://github.com/mapbox/node-sqlite3/wiki/API#databasepreparesql-param--callback
增删改查例子
对于增加删除或者修改,都可以使用run
来直接执行sql。但是我们要注意:对于会带入外部传递的参数的这种情况下,千万不能做简单的字符串拼接sql,我们需要使用参数来带入sql中的?
、?1
、$id
、:id
、@id
等,来完成sql的最终创建。
由于篇幅限制,我们先给出几个简单的例子,在下一篇文章中,苏南大叔再对这部分进行详细解读。
db.run("INSERT INTO lorem(info,info2) VALUES ($d1,$d2)",{$d1:"f1",$d2:"f2"},function(err,res){console.log(err,res,this.lastID);
});
db.run("delete from lorem where rowid > 1",function(err,res){
console.log(err,res,this.changes,this.lastID);
});
db.run("UPDATE lorem SET info = ? WHERE rowid = ?", [ "bar", 2 ]);
db.get("select * from lorem where rowid=?",[1],function(err,res){
console.log(err,res);
});
db.all("select * from lorem",function(err,res){
console.log(err,res);
});
这里仅做最基本的应用举例。所以,也仅作基本说明。
结束数据库连接
结束数据库链接......
db.close();
值得特别说明的是:在electron
里面使用sqlite3
的语句,和在node
里面使用sqlite3
是一样的体验。本篇文章的大部分内容,并不仅仅适用于electron
,在纯正的node
代码里面,也是一样适用的。
以上是 electron使用sqlite数据库 的全部内容, 来源链接: utcz.com/a/119431.html