node-sqlite3 文档
node-sqlite3 文档
Main
new sqlite3.Database(filename, [mode], [callback])
返回一个新的数据库对象并自动打开数据库,
- filename 数据库文件名
sqlite3.verbose()
Database
Database#close([callback])
关闭数据库
Database#configure(option, value)
Database#run(sql, [param, ...], [callback])
执行带特定参数的SQL语句,然后调用回调函数。
返回:数据库对象,允许链式调用。
-
sql sql 语句
-
[param,...] sql 语句的参数
三种绑定参数的方法:
// Directly in the function arguments.
db.run("UPDATE tbl SET name = ? WHERE id = ?", "bar", 2);
// As an array.
db.run("UPDATE tbl SET name = ? WHERE id = ?", [ "bar", 2 ]);
// As an object with named parameters.
db.run("UPDATE tbl SET name = $name WHERE id = $id", {
$id: 2,
$name: "bar"
});
- [callback] 在发生错误时调用的回调函数
-
如果发生错误,回调的参数为 [error object] 包括 [error message]
-
如果执行成功,回调的参数为 null,函数内的 this 为 [statement object]
-
执行成功时, this 对象包含以下两个属性
- lastID: 最后插入行的 id,仅为
INSERT
执行成功的结果 - changes: 受查询语句影响的行数,仅为
UPDATE
orDELETE
执行成功的结果 - 注:仅有
.run()
方法中有这两个属性,其他情况不可用
- lastID: 最后插入行的 id,仅为
-
Database#get(sql, [param, ...], [callback])
执行带特定参数的SQL语句,然后调用回调函数返回结果的第一行。
返回:数据库对象,允许链式调用。
参数同 Database#run
,不同之处是
- callback
function(err, row) {}
- 如果查询结果是空 row 为
undefined
- 否则 row 为一个对象,其属性名为数据库表的列名
- 如果查询结果是空 row 为
Database#all(sql, [param, ...], [callback])
执行带特定参数的SQL语句,然后调用回调函数返回所有结果。
返回:数据库对象,允许链式调用。
参数同 Database#run
,不同之处是
- callback
function(err, rows) {}
, rows 为数组- 如果查询结果是空 row 为
[]
- 否则 rows 为对象的数组,其属性名为数据库表的列名
- 如果查询结果是空 row 为
注: all()
方法将会查询全部结果,并保存在内存中,当查询结果可能很多时,建议使用 Database#each
获取所有数据 或 Database#prepare
接着多次使用 Statement#get
获取多行数据。
Database#each(sql, [param, ...], [callback], [complete])
执行带特定参数的SQL语句,然后每行调用一次回调函数。
返回:数据库对象,允许链式调用。
参数同 Database#run
,不同之处是
-
callback
function(err, each_row) {}
- 如果查询成功但结果为空,回调不会被调用
- 其他情况,查询结果有多少行,回调将会调用多少次
-
complete 当回调
callback
全部调用完成后执行,
function(err,num_of_rows){ }
-
如果参数只传入一个函数,此函数将作为 callback 回调
-
如果参数传入两个函数,此函数将作为 [callback, complete] 两个回调
Database#exec(sql, [callback])
执行所支持的各种sql语句,但不会获得任何结果,
返回:数据库对象,允许链式调用。
Database#prepare(sql, [param, ...], [callback])
预备执行 sql
返回:[Statement object]