electron sqlite update
本文转载自:https://newsn.net/
本文讲述: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(图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(图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(图6-3)
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(图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(图6-6)
结论
上述不同的代码,都可以达到数据更新目的。但是,不同姿势的函数也是不一样的使用体验,对吧?
以上是 electron sqlite update 的全部内容, 来源链接: utcz.com/a/119281.html