SQLite 是一个轻量级的数据库,以其简单易用而闻名。在 Node.js 应用中整合 SQLite 可以提供快速的数据库操作和高效的性能。本文将详细探讨如何在 Node.js 中使用 SQLite,...
SQLite 是一个轻量级的数据库,以其简单易用而闻名。在 Node.js 应用中整合 SQLite 可以提供快速的数据库操作和高效的性能。本文将详细探讨如何在 Node.js 中使用 SQLite,包括环境搭建、基本操作、高级特性以及最佳实践。
确保你的系统上安装了 Node.js。可以从 Node.js 官网 下载并安装最新版本。
在 Node.js 项目中,你可以使用 sqlite3 模块来与 SQLite 数据库交互。使用以下命令安装:
npm install sqlite3const sqlite3 = require('sqlite3').verbose();
const db = new sqlite3.Database(':memory:'); // 创建内存数据库
db.serialize(() => { db.run(`CREATE TABLE users ( id INTEGER PRIMARY KEY, name TEXT NOT NULL, email TEXT NOT NULL )`); db.run(`INSERT INTO users (name, email) VALUES ('Alice', 'alice@example.com')`); db.run(`INSERT INTO users (name, email) VALUES ('Bob', 'bob@example.com')`);
});
db.close();db.all(`SELECT rowid AS id, name, email FROM users`, (err, rows) => { if (err) { throw err; } rows.forEach((row) => { console.log(`${row.id}: ${row.name}, ${row.email}`); });
});db.run(`UPDATE users SET email = 'alice_new@example.com' WHERE name = 'Alice'`);db.run(`DELETE FROM users WHERE name = 'Bob'`);SQLite 支持事务处理,这对于保证数据的一致性至关重要。
db.serialize(() => { db.run(`BEGIN TRANSACTION;`); db.run(`INSERT INTO users (name, email) VALUES ('Charlie', 'charlie@example.com');`); db.run(`COMMIT;`);
});使用预处理语句可以防止 SQL 注入攻击。
const stmt = db.prepare(`INSERT INTO users (name, email) VALUES (?, ?)`);
stmt.run(['David', 'david@example.com']);
stmt.finalize();为了提高性能,应该使用连接池来管理数据库连接。
const sqlite3 = require('sqlite3').verbose();
const db = new sqlite3.Database(':memory:', (err) => { if (err) { return console.error(err.message); } console.log('Connected to the in-memory SQlite database.');
});
// 使用连接池
const pool = sqlite3.connect(':memory:', { pool: true });在数据库操作中,错误处理至关重要。
db.run(`INSERT INTO users (name, email) VALUES ('Eve', 'eve@example.com')`, (err) => { if (err) { return console.error(err.message); } console.log(`A row has been inserted with rowid ${this.lastID}`);
});定期备份数据库是一个良好的实践。
db.serialize(() => { db.run(`BACKUP 'backup.db' TO 'backup_copy.db'`);
});通过遵循这些指南,你可以在 Node.js 应用中有效地使用 SQLite,实现高效的数据存储和检索。