打开一个数据库,如:
//数据库的名字是"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){









