database.js 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. // 1️⃣ 导入时用别名重命名原模块的 Database
  2. import pkg from 'node-sqlite3-wasm';
  3. const {Database: SQLite3Database} = pkg; // 👈 关键别名
  4. import {fileURLToPath} from "url";
  5. import path from 'path';
  6. // 2️⃣ 定义你的自定义类(可继承/扩展/完全重写)
  7. export class DataBase {
  8. constructor(db_file) {
  9. this.db_file = db_file || './database.db';
  10. this.db = null;
  11. }
  12. // 自定义方法
  13. async initDb() {
  14. const __filename = fileURLToPath(import.meta.url);
  15. const __dirname = path.dirname(__filename);
  16. const __rootPath = path.join(__dirname, '../');
  17. const __dbpath = path.join(__rootPath, this.db_file);
  18. // console.log('__dbpath:', __dbpath);
  19. const db = new SQLite3Database(__dbpath);
  20. this.db = db;
  21. return db
  22. }
  23. async startDb() {
  24. if (!this.db) {
  25. await this.initDb()
  26. }
  27. }
  28. async endDb() {
  29. if (this.db) {
  30. await this.db.close();
  31. this.db = null;
  32. }
  33. }
  34. }
  35. async function main() {
  36. // 打开数据库(若不存在则创建)
  37. const db = new SQLite3Database("../database.db");
  38. // 创建表
  39. db.run(`
  40. CREATE TABLE IF NOT EXISTS users (
  41. id INTEGER PRIMARY KEY AUTOINCREMENT,
  42. name TEXT NOT NULL
  43. )
  44. `);
  45. // 插入数据
  46. db.run('INSERT INTO users (name) VALUES (?)', ['Alice']);
  47. db.run('INSERT INTO users (name) VALUES (?)', ['Bob']);
  48. // 查询数据
  49. const users = db.all('SELECT * FROM users');
  50. console.log(users);
  51. // 更新数据
  52. db.run('UPDATE users SET name = ? WHERE id = ?', ['Charlie', 1]);
  53. // 查询更新后的数据
  54. const updatedUsers = db.all('SELECT * FROM users');
  55. console.log(updatedUsers);
  56. // 删除数据
  57. db.run('DELETE FROM users WHERE id = ?', [2]);
  58. // 查询删除后的数据
  59. const finalUsers = db.all('SELECT * FROM users');
  60. console.log(finalUsers);
  61. // 关闭数据库
  62. db.close();
  63. }
  64. export const database = new DataBase('./database.db');
  65. // main().catch(err => console.error(err));