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

在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'));

electron渲染进程中使用sqlite - 00_dbjs

最简单的回调写法例子

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

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

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

async和await的写法

当然,下面还有个使用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

相关链接

结论

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

本站采用创作共用版权协议, 要求署名、非商业用途和相同方式共享。
转载本站内容必须也遵循“署名-非商业用途-相同方式共享”的创作共用协议。
程序如此灵动~》下所有原创文章,如被用于商业用途,请您按规定支付稿费。