H5W3
当前位置:H5W3 > JavaScript > 正文

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 数据库之数据交互

electron 搭配 sqlite 数据库之数据交互(图3-1)

electron 搭配 sqlite 数据库之数据交互

electron 搭配 sqlite 数据库之数据交互(图3-2)

electron 搭配 sqlite 数据库之数据交互

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代码里面,也是一样适用的。

本文地址:H5W3 » electron使用sqlite数据库

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址