SQLite 是一個輕量級的嵌入式數據庫,它在 Node.js 中的使用通常是異步的。這意味著當你執行數據庫操作時,例如創建表、插入數據或查詢數據,這些操作會被放入事件隊列中異步執行,而不會阻塞主線程。
安裝sqlite3
npm install sqlite3
安裝出錯,以前沒這個問題,這次出錯了。最后發現是版本問題,對于 node 10.x 及更高版本,只需安裝sqlite3@4.1.1 ,問題解決。
npm install sqlite3@4.1.1
如果沒有解決你的問題,可以試下網上說的一些方法。
I had same issue. Steps below should solve It on windows:
- You should install Windows Build Tools globally before install gyp
npm i --global --production windows-build-tools
- Install Node Gyp
npm i -g node-gyp
- Clear NPM Cache
npm cache clean
- Try to install SQLite again
npm i sqlite3
相關資料:
- npm install sqlite3 error
- npm install sqlite3 failed
使用示例
import sqlite3 from 'sqlite3';
let db = new sqlite3.Database('mydatabase.db');
// 創建一個名為users的表格
db.serialize(() => {db.run("CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY, name TEXT)");// 插入一些數據db.run("INSERT INTO users (name) VALUES (?)", ['Alice']);db.run("INSERT INTO users (name) VALUES (?)", ['Bob']);// 查詢數據db.all("SELECT * FROM users", (err, rows) => {if (err) {throw err;}rows.forEach(row => {console.log(row.id, row.name);});});console.log('ok');
});// 關閉數據庫連接
db.close();
在使用 SQLite 操作數據庫時,使用 db.serialize() 可以確保在執行多個查詢時,它們按順序執行。這對于確保某些查詢在其他查詢完成后再執行是很重要的。比如創建表和插入數據,如果不使用 db.serialize(),可能會導致操作的執行順序混亂,從而引發錯誤或邏輯上的混亂。
db.serialize() 并不是將其中的操作變成同步執行,而是確保其中的操作按照順序執行,從而避免并發執行帶來的問題。需要理解的是,雖然代碼是按順序寫的,但是數據庫操作本身是異步的。這意味著每個數據庫操作會被放入事件隊列中,然后在適當的時機被執行,而不是立即阻塞執行。因此,在執行一系列數據庫操作時,你并不能保證它們會嚴格按照你代碼中的順序立即執行完畢,可能會有一些微小的時間差異。
常用API方法:
new sqlite3.Database(filename [, mode], [, callback])
:打開或創建一個數據庫文件。db.run(sql [, params], [, callback])
:執行一個SQL語句,如INSERT、UPDATE或DELETE。db.get(sql [, params], callback)
:執行一個SELECT查詢,并返回一行數據。db.all(sql [, params], callback)
:執行一個SELECT查詢,并返回所有匹配的行。db.each(sql [, params], callback)
:執行 SELECT 查詢,并逐行處理查詢結果。db.exec(sql [, callback])
:執行多條 SQL 語句,并在一次調用中處理這些語句。