在 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 语句执行错误等。