better-sqlite3-typescript 用于 TypeScript:完整指南及示例
\n\n在 TypeScript 开发中,经常需要在不部署完整数据库的情况下进行本地数据存储。SQLite 是此类任务的理想解决方案:它是一种嵌入式关系型数据库,无需独立服务器即可运行。然而,标准的 better-sqlite3 库是用 JavaScript 编写的,不提供内置的类型定义。这时 better-sqlite3-typescript 就派上了用场——它是一个封装层,在 better-sqlite3 的同步 API 之上添加了严格的 TypeScript 类型支持。
该库允许您编写类型安全的代码来操作 SQLite,在 IDE 中获得自动补全功能,在编译阶段进行类型检查,并减少运行时错误。您既能享受同步数据库访问的所有优势(简单、可预测、高性能),又能获得 TypeScript 类型系统的强大能力。
\n\n在本文中,我们将详细介绍安装、主要方法,提供实际示例,并给出性能建议。无论您是新手还是经验丰富的开发者,只要希望在 TypeScript 项目中高效使用 SQLite,本文都将对您有所帮助。
\n\n安装
\n\n要安装该库,请在项目终端中执行以下命令:
\n\nnpm install better-sqlite3-typescript better-sqlite3\n\n同时还需要为 TypeScript 安装类型定义:
\n\nnpm install -D @types/better-sqlite3\n\n安装后,您可以在项目中导入该库:
\n\nimport Database from 'better-sqlite3-typescript';\n\n快速入门
\n\n一个创建数据库、创建表并插入数据的最小工作示例:
\n\nimport Database from 'better-sqlite3-typescript';\n\n// 创建或打开数据库\nconst db = new Database('my_database.db');\n\n// 创建表\ndb.exec(`\n CREATE TABLE IF NOT EXISTS users (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n name TEXT NOT NULL,\n email TEXT UNIQUE NOT NULL,\n age INTEGER\n )\n`);\n\n// 插入数据\nconst insert = db.prepare('INSERT INTO users (name, email, age) VALUES (?, ?, ?)');\ninsert.run('Alice', 'alice@example.com', 30);\ninsert.run('Bob', 'bob@example.com', 25);\n\n// 读取数据\nconst select = db.prepare('SELECT * FROM users');\nconst users = select.all();\nconsole.log(users);\n\n// 关闭连接\ndb.close();\n\n这段代码将在当前目录下创建 my_database.db 文件,创建 users 表,添加两个用户,并将它们输出到控制台。
主要方法和函数
\n\n让我们来看看该库的关键方法。所有示例均假设您已有一个数据库实例 db。
1. new Database(filename, options?)
\n签名: new Database(filename: string, options?: DatabaseOptions): Database
描述: 创建或打开一个 SQLite 数据库。如果文件不存在,则会创建它。选项允许配置打开模式(只读、内存等)。
\n示例:
\n// 打开内存数据库(不保存到磁盘)\nconst memDb = new Database(':memory:');\n\n// 以只读模式打开数据库\nconst readOnlyDb = new Database('data.db', { readonly: true });\n\n2. db.prepare(sql)
\n签名: prepare(sql: string): Statement
描述: 将 SQL 查询编译为预编译语句。返回一个 Statement 对象,可以使用不同参数重复执行。