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

本文讲述:crud增删改查之u,对应单词是update。苏南大叔表示:终于叫法统一了一下,世界从此和平。

前置代码

var sqlite3 = require('sqlite3').verbose();
const path = require('path');
var db = new sqlite3.Database(path.join(__dirname, 'db.db'));
db.serialize(function() {
    db.run("CREATE TABLE if not exists demo (info TEXT,info2 TEXT)");
});
// db.close();

run()函数

run()函数还是要注意参数的传递方式,千奇百怪。如果肯定能成功的话,回调函数是没有啥用的。而下面的更新标准如果都是同一个id的话,不一定最终的结果是什么。因为没有放置在db.serialize()中。

db.run("UPDATE demo SET info = ? WHERE rowid = ?", "bar1", 1,function(err,res){
  console.log("18:",err,res,this.lastID);
});
db.run("UPDATE demo SET info = ? WHERE rowid = ?", [ "bar2", 2 ],function(err,res){
  console.log("19:",err,res,this.lastID);
});
db.run("UPDATE demo SET info = $name WHERE rowid = $id", {
    $id: 3,
    $name: "bar3"
},function(err,res){
  console.log("20:",err,res,this.lastID);
});

electron与sqlite,增删改查之update - sqlite_insert_13

electron与sqlite,增删改查之update(图6-1)

run()主动触发的update错误

在这里,苏南大叔主动触发了一个错误,可以看到回调函数的err参数中,给出了报错信息。

db.run("UPDATE demo_fake SET info = ? WHERE rowid = ?", "bar1", 1,function(err,res){
  console.log("21:",err,res,this.lastID);
});

electron与sqlite,增删改查之update - sqlite_insert_15

electron与sqlite,增删改查之update(图6-2)

each()

each()函数果真是不走寻常路,用each()执行update的话,居然没有触发回调函数。一次都没有触发,但是确实执行成功了。而更新失败的时候,回调函数的err会返回值。

db.each("UPDATE demo SET info = ? ", ["bar!!"], function(err,res){
  //update成功的时候,没有回调。但是失败的时候存在。
  console.log(err,res);
});

electron与sqlite,增删改查之update - 02

electron与sqlite,增删改查之update(图6-3)

electron与sqlite,增删改查之update - 03

electron与sqlite,增删改查之update(图6-4)

exec()

用exec()来执行update的话,注意是必须拼接sql的。没有办法像run一样高大上的传参。无论成功失败,都是会执行回调函数的。

db.exec("UPDATE demo SET info = 'bar??' ", function(err,res){
  console.log("23:",err,res,this.lastID);
});

electron与sqlite,增删改查之update - 05

electron与sqlite,增删改查之update(图6-5)

补充说明this.changes

update没有this.lastID,但是却是有this.changes返回值的哦。这个差一点给弄丢了。大家看看这个this.changes,还是非常有用的。影响了几条数据。

db.run("UPDATE demo SET info = 'bar??' ", function(err,res){
  console.log("23:",err,res,this.changes,this.lastID);
});

electron与sqlite,增删改查之update - 06

electron与sqlite,增删改查之update(图6-6)

相关链接

结论

上述不同的代码,都可以达到数据更新目的。但是,不同姿势的函数也是不一样的使用体验,对吧?

如果您对苏南大叔的sqlite的经验技巧文章感兴趣,可以点击这里查看更多文章:https://newsn.net/tag/sqlite/

  【node】秘籍文章入口,仅传授于有缘之人  node

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

打赏领取小礼物

打赏任意金额,发送截图到邮箱 shang@newsn.net ,可以领取精选回馈如下(任选其一):
  • 《前端视频教程大礼包》一套
  • 《wordpress精选皮肤》一套
  • 《dedecms织梦精选模板》一套
感谢您的打赏,让我更有动力,将更多精彩教程文章,呈现给大家!谢谢!

岁月静好

关注互联网发展,关注苏南大叔的《程序如此灵动~》博客
本文章来自:程序如此灵动~
博客地址为:https://newsn.net/
原文地址为:https://newsn.net/say/electron-sqlite-update.html
上一篇好文:electron与sqlite,增删改查之select
下一篇好文:electron与sqlite,增删改查之delete

如果您转载了本文章,出于某种原因,并没有注明作者或者出处。
在这里,苏南大叔也表示理解和支持。因为苏南大叔深深地明白:
您会在合适的时机,合适的地方,给本博客一个外链。对吧?
您若开心,便是安好!岁月静好,但愿世界和平,没有纷争~