前言
在现代 Web 开发的过程中,前端与数据库之间的交互变得越来越频繁。而 SQLite 作为一种轻量、高效、可嵌入的关系型数据库,以其小巧、实用的优点成为前端开发者的首选。而 @s2maps/better-sqlite3 这个 npm 包则是对官方 SQLite Node.js 包的改进与升级,提供了更好的性能、安全性以及易用性。
本篇文章将会介绍 @s2maps/better-sqlite3 包的使用方法,方便前端开发者在数据库处理中更加专注于业务逻辑的实现,提升开发效率。
安装
要使用 @s2maps/better-sqlite3 包,我们需要先进行安装:
npm install @s2maps/better-sqlite3
安装完成后,我们就可以通过以下方式在项目中引入它:
const Database = require('@s2maps/better-sqlite3');
基本使用
连接数据库
首先,我们需要连接 SQLite 数据库,可以通过 new Database()
的方式创建数据库实例:
const db = new Database('path/to/database.db');
也可以选择使用内存数据库:
const db = new Database(':memory:');
执行 SQL 语句
执行 SQL 语句的方式与官方的 SQLite Node.js 包类似:
db.exec('CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY, username TEXT)');
另一种比较简单的方式是使用 prepare()
和 run()
方法:
const stmt = db.prepare('INSERT INTO users VALUES (?, ?)'); stmt.run(1, 'John Doe');
执行查询
执行查询时,我们可以使用 prepare()
和 all()
方法:
const stmt = db.prepare('SELECT * FROM users WHERE id = ?'); const users = stmt.all(1); console.log(users);
另外,还可以使用 get()
方法获取到单条记录:
const user = stmt.get(1); console.log(user);
事务处理
@s2maps/better-sqlite3 包还支持事务处理:
db.transaction(() => { db.prepare('INSERT INTO users VALUES (?, ?)').run(2, 'Jane Doe'); db.prepare('INSERT INTO users VALUES (?, ?)').run(3, 'Alice'); })();
参数绑定
@s2maps/better-sqlite3 包还支持参数绑定,使用占位符 ?
来设置参数:
const stmt = db.prepare('INSERT INTO users VALUES (?, ?)'); stmt.run(4, 'Bob');
多条语句
如果我们需要执行多条语句,可以使用 transaction()
方法:
db.transaction(() => { db.exec(` INSERT INTO users VALUES (5, 'Tom'); INSERT INTO users VALUES (6, 'Jerry'); `); })();
参数化查询
参数化查询可以防止 SQL 注入攻击,使用 ?
占位符来代替值,在执行语句之前使用 bind()
方法来传入参数:
const stmt = db.prepare('SELECT * FROM users WHERE username = ?'); const username = 'John Doe'; const user = stmt.get(username); console.log(user);
总结
@s2maps/better-sqlite3 包提供了更好的性能、易用性以及安全性,能够更好地满足前端开发者在数据库交互的需求。希望本文对您有所帮助,也欢迎留言分享您的使用心得。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/154711