nodejs集成sqlite使用示例

2020-06-17 05:31:27易采站长站整理

打开一个数据库,如:


//数据库的名字是"mydatebase.db"
var database;
database = new sqlite3.Database("mydatebase.db", function(e){
if (err) throw err;
});
//也可以使用内存型,数据不会永久保存
database = new sqlite3.Database(":memory:", function(e){
if (err) throw err;
});

执行后会在项目的根目录生成一个“mydatebase.db”文件,这就是sqlite保存数据的文件了。

关闭数据库


Database#close([callback])

该方法可以关闭一个数据库连接对象,参数:

callback(可选):关闭成功的回调。 第一个参数是一个错误对象,当它为“null”时,表示关闭成功。

执行DDL和DML语句 


Database#run(sql, [param, ...], [callback])

该方法可以执行DDL和DML语句,如建表、删除表、删除行数据、插入行数据等,参数:

sql:要运行的SQL字符串。sql的类型是DDL和DML,DQL不能使用这个命令。执行后返回值不包含任何结果,必须通过callback回调函数获取执行结果。

param,…(可选):当SQL语句包含占位符(?)时,这里可以传对应的参数。 这里有三种传值方法,如:


// 直接通过参数传值.
db.run("UPDATE tbl SET name = ? WHERE id = ?", "bar", 2);

// 将值封装为一个数组传值.
db.run("UPDATE tbl SET name = ? WHERE id = ?", [ "bar", 2 ]);

// 使用一个json传值.参数的前缀可以是“:name”,“@name”和“$name”。推荐用“$name”形式
db.run("UPDATE tbl SET name = $name WHERE id = $id", {
$id: 2,
$name: "bar"
});

关于占位符的命名,sqlite3还支持更复杂的形式,这里不再扩展,有兴趣了解的话请查看官方文档。

callback(可选):如果执行成功,则第一个参数为null,否则就是出错。

如果执行成功,上下文this包含两个属性:lastID和changes。lastID表示在执行INSERT命令语句时,最后一条数据的id;changes表示UPADTE命令和DELETE命令时候,影响的数据行数。


db.run("UPDATE foo SET id = 1 WHERE id <= 500", function(err) {
if (err) throw err;
//使用this.changes获取改变的行数
assert.equal(500, this.changes);
done();
});

执行多条语句


Database#exec(sql, [callback])

Database#exec与Database#run函数一样,都是DDL和DML语句,但是Database#exec可以执行多条语句,并且不支持占位符参数。


database.run("CREATE TABLE foo (id INT)", function(e){