我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...

electron的渲染进程中,也是可以使用sqlite的,使用方式和在主进程中相比较而言,是基本上大同小异的。在本文中,苏南大叔给大家带来了几个简单的小demo,希望对读者有所帮助。

苏南大叔:如何在electron渲染进程中使用sqlite? - electron-render-sqlite
如何在electron渲染进程中使用sqlite?(图5-1)

基本数据连接代码

我们需要个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'));

苏南大叔:如何在electron渲染进程中使用sqlite? - 00_dbjs
如何在electron渲染进程中使用sqlite?(图5-2)

最简单的回调写法例子

这里先做个最简单易懂的例子。

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);
      }
    });
  });
});

运行结果如下。

苏南大叔:如何在electron渲染进程中使用sqlite? - 01_demo
如何在electron渲染进程中使用sqlite?(图5-3)

更标准的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);
    }
  });
});

苏南大叔:如何在electron渲染进程中使用sqlite? - 02_demo2
如何在electron渲染进程中使用sqlite?(图5-4)

asyncawait的写法

当然,下面还有个使用asyncawait读取数据的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? - async_str
如何在electron渲染进程中使用sqlite?(图5-5)

相关链接

结论

基本上在渲染进程里面使用sqlite,是毫无压力的。您也来试试把~ 更多sqlite的经验文章,请点击这里查看:https://newsn.net/tag/sqlite/

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。

 【福利】 腾讯云最新爆款活动!1核2G云服务器首年50元!

 【源码】本文代码片段及相关软件,请点此获取更多信息

 【绝密】秘籍文章入口,仅传授于有缘之人   electron    sqlite