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]