如何在electron渲染进程中使用sqlite?
发布于 作者:苏南大叔 来源:程序如此灵动~ 我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...
在electron
的渲染进程中,也是可以使用sqlite
的,使用方式和在主进程中相比较而言,是基本上大同小异的。在本文中,苏南大叔给大家带来了几个简单的小demo
,希望对读者有所帮助。
基本数据连接代码
我们需要个db.js
来存放基本的连接代码,一个db.db
来盛放数据,一个index.html
来做渲染进程。在index.html
中,用script
标签来加载db.js
。
var sqlite3 = require('sqlite3').verbose();
const path = require('path');
var db = new sqlite3.Database(path.join(__dirname, 'db.db'));
最简单的回调写法例子
这里先做个最简单易懂的例子。
db.run("create table test(name varchar(15))",function(){
db.run("insert into test values('hello,word')",function(){
db.all("select * from test",function(err,res){
if(!err){
console.log(JSON.stringify(res));
}
else{
console.log(err);
}
});
});
});
运行结果如下。
更标准的serialize
写法
如果您看了苏南大叔的另外一篇文章( https://newsn.net/say/electron-sqlite3-api.html )的话,就可以知道。我们还可以换一种方式来改写上述代码。可以尽量避免大量的语句嵌套。
db.serialize(function() {
db.run("create table test(name varchar(15))");
db.run("insert into test values('hello,word')");
db.all("select * from test",function(err,res){
if(!err){
console.log(JSON.stringify(res));
}
else{
console.log(err);
}
});
});
async
和await
的写法
当然,下面还有个使用async
和await
读取数据的demo。如果你有兴趣,可以参考一下。
(async function(){
function read(){
return new Promise((resolve,reject)=>{
db.all('select * from test where 1=?',1,(err,rows)=>{
if(err !=null) reject(err);
if (rows && rows.length>0){
resolve(rows);
}
else{
reject(err);
}
});
});
}
let result=await read();
console.log(JSON.stringify(result));
})();
相关链接
- 《electron搭配sqlite数据库之环境安装》 https://newsn.net/say/electron-install-sqlite3.html
结论
基本上在渲染进程里面使用sqlite,是毫无压力的。您也来试试把~ 更多sqlite的经验文章,请点击这里查看:https://newsn.net/tag/sqlite/ 。
如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。
打包之后好像不能在渲染进程中运行
瞎说