在 Node.js v22.5.0 及更高版本中,node:sqlite
模塊作為內置模塊被引入,為開發者提供了與 SQLite 數據庫交互的官方支持。以下是關于 node:sqlite
模塊的詳細介紹:
一、模塊啟用與導入
- 啟用方式:
node:sqlite
模塊目前處于活躍開發階段,需要通過--experimental-sqlite
CLI 標志來啟用。 - 導入方式:使用
import
語句從node:sqlite
模塊中導入所需的類和方法。例如:
import { DatabaseSync } from 'node:sqlite';
二、核心類與方法
1. DatabaseSync
類
- 作用:表示與 SQLite 數據庫的單連接,所有 API 均同步執行。
- 構造函數:
new DatabaseSync(location[, options])
- location:數據庫位置,可以是文件路徑(如
'./mydb.sqlite'
)或內存標識(如':memory:'
)。 - options:配置選項,包括是否自動打開數據庫(
open
)、是否啟用外鍵約束(enableForeignKeyConstraints
)等。
- location:數據庫位置,可以是文件路徑(如
2. 常用方法
database.exec(sql)
:- 作用:執行一條或多條 SQL 語句,不返回結果。
- 示例:
database.exec(`CREATE TABLE data(key INTEGER PRIMARY KEY,value TEXT) STRICT
`);
database.prepare(sql)
:- 作用:創建預處理語句,用于高效執行重復的 SQL 操作。
- 示例:
const insert = database.prepare('INSERT INTO data (key, value) VALUES (?, ?)');
insert.run(1, 'hello');
insert.run(2, 'world');
database.close()
:- 作用:關閉數據庫連接。
- 示例:
database.close();
三、使用示例
以下是一個完整的示例,展示了如何使用 node:sqlite
模塊進行數據庫操作:
import { DatabaseSync } from 'node:sqlite';// 創建或打開內存數據庫
const database = new DatabaseSync(':memory:');// 創建表
database.exec(`CREATE TABLE data(key INTEGER PRIMARY KEY,value TEXT) STRICT
`);// 插入數據
const insert = database.prepare('INSERT INTO data (key, value) VALUES (?, ?)');
insert.run(1, 'hello');
insert.run(2, 'world');// 查詢數據
const query = database.prepare('SELECT * FROM data ORDER BY key');
console.log(query.all()); // 輸出: [ { key: 1, value: 'hello' }, { key: 2, value: 'world' } ]// 關閉數據庫連接
database.close();
四、注意事項
- 實驗性特性:
node:sqlite
模塊目前處于實驗性階段,API 可能在未來版本中發生變化。 - 同步執行:
DatabaseSync
類的所有方法均同步執行,可能會阻塞事件循環。對于高并發場景,建議考慮使用異步數據庫驅動(如sqlite3
模塊)。 - 錯誤處理:在使用
node:sqlite
模塊時,應妥善處理可能出現的錯誤,如數據庫連接失敗、SQL 語句執行錯誤等。