0


【Node.js操作SQLite指南】

Node.js操作SQLite指南

在本篇博客中,我们将学习如何在Node.js中操作SQLite数据库。我们将使用sqlite3模块来创建数据库、创建表以及进行数据的增删改查操作。

文章目录

安装sqlite3模块

首先,我们需要安装sqlite3模块。在终端中运行以下命令来安装sqlite3模块:

npm install sqlite3

创建数据库

使用sqlite3模块创建一个数据库连接,并创建一个数据库文件。以下是示例代码:

const sqlite3 =require('sqlite3').verbose();// 创建数据库连接const db =newsqlite3.Database('mydatabase.db');

创建表

使用SQL语句在数据库中创建表。以下是示例代码:

// 创建表
db.run(`CREATE TABLE IF NOT EXISTS users (
  id INTEGER PRIMARY KEY AUTOINCREMENT,
  name TEXT,
  age INTEGER
)`);

数据的增删改查

使用SQL语句执行数据的增删改查操作。以下是一些示例代码:

插入数据

// 插入数据
db.run(`INSERT INTO users (name, age) VALUES ('John Doe', 25)`);

查询数据

// 查询数据
db.all(`SELECT * FROM users`,(err, rows)=>{if(err){
    console.error(err);}else{
    console.log(rows);}});

更新数据

// 更新数据
db.run(`UPDATE users SET age = 30 WHERE name = 'John Doe'`);

删除数据

// 删除数据
db.run(`DELETE FROM users WHERE name = 'John Doe'`);

关闭数据库连接

在完成数据库操作后,记得关闭数据库连接。以下是示例代码:

// 关闭数据库连接
db.close();

请注意,上述代码只是一个简单的示例,可以根据实际需求进行更复杂的操作。同时,还可以使用参数化查询来防止SQL注入攻击。

希望本篇博客对有所帮助!如果有任何疑问,请随时提问。

SQLite3的Node.js工具类

以下是一个封装了SQLite3的Node.js类,用于实现数据在表中的增删改,分页,自定义sql操作:

const sqlite3 =require('sqlite3').verbose();classSQLiteDB{constructor(databaseName){this.db =newsqlite3.Database(databaseName);}createTable(tableName, columns){const columnDefinitions = columns.map(column=>`${column.name}${column.type}`).join(', ');const query =`CREATE TABLE IF NOT EXISTS ${tableName} (${columnDefinitions})`;this.db.run(query);}insertData(tableName, data){const columns = Object.keys(data).join(', ');const placeholders = Object.keys(data).map(()=>'?').join(', ');const values = Object.values(data);const query =`INSERT INTO ${tableName} (${columns}) VALUES (${placeholders})`;this.db.run(query, values);}updateData(tableName, data, condition){const setClause = Object.keys(data).map(column=>`${column} = ?`).join(', ');const values = Object.values(data);const query =`UPDATE ${tableName} SET ${setClause} WHERE ${condition}`;this.db.run(query, values);}deleteData(tableName, condition){const query =`DELETE FROM ${tableName} WHERE ${condition}`;this.db.run(query);}executeQuery(query, params, callback){this.db.all(query, params,(err, rows)=>{if(err){
        console.error(err);}else{callback(rows);}});}/**
   * 获取分页数据
   * @param tableName
   * @param page
   * @param pageSize
   * @param condition // const condition = "column_name = 'value'";
   * @returns {Promise<unknown>}
   */getPagedData(tableName, page, pageSize,condition){const offset =(page -1)* pageSize;const countQuery =`SELECT COUNT(*) as total FROM ${tableName} WHERE ${condition}`;const dataQuery =`SELECT * FROM ${tableName} WHERE ${condition} LIMIT ? OFFSET ?`;returnnewPromise((resolve, reject)=>{this.db.serialize(()=>{this.db.get(countQuery,(err, row)=>{if(err){reject(err);}else{const total = row.total;this.db.all(dataQuery,[pageSize, offset],(err, rows)=>{if(err){reject(err);}else{const totalPages = Math.ceil(total / pageSize);resolve({data: rows, total, totalPages });}});}});});});}closeConnection(){this.db.close();}}//================= 使用案例 ==================================// const SQLiteDB = require('./SQLiteDB');// 创建数据库连接// const db = new SQLiteDB('D:\\WuWorkSpace\\code\\a-wu-project\\爬虫和逆向\\crawler-wusp\\AoMenMa\\2023\\aomen2023.db');//// // 执行自定义SQL查询// const query = 'SELECT * FROM users WHERE age > ?';// const params = [30];// db.executeQuery(query, params, rows => {//   console.log(rows);// });//// // 创建表// const columns = [//   { name: 'id', type: 'INTEGER PRIMARY KEY AUTOINCREMENT' },//   { name: 'name', type: 'TEXT' },//   { name: 'age', type: 'INTEGER' }// ];// db.createTable('users', columns);//// // 插入数据// const data = { name: 'John Doe', age: 25 };// db.insertData('users', data);//// // 更新数据// const newData = { age: 30 };// const condition = 'name = "John Doe"';// db.updateData('users', newData, condition);//// // 删除数据// const deleteCondition = 'age > 30';// db.deleteData('users', deleteCondition);//// // 关闭数据库连接// db.closeConnection();//===================== 分页案例 ===============================// const page = 1;// const pageSize = 10;// const condition = "column_name = 'value'";// db.getPagedData("user", page, pageSize,condition)// .then(({ data, total, totalPages }) => {//   console.log(data); // 处理分页查询结果//   console.log(total); // 总数//   console.log(totalPages); // 总页数// })// .catch(err => {//   console.error(err); // 处理错误// })// .finally(() => {//   db.closeConnection(); // 关闭数据库连接// });

module.exports = SQLiteDB;

在上述示例代码中,我们首先引入了

SQLiteDB

类,并创建了一个数据库连接。然后,我们使用

createTable

方法创建了一个名为

users

的表。接下来,我们使用

insertData

方法插入了一条数据。然后,我们使用

updateData

方法更新了数据。最后,我们使用

deleteData

方法删除了符合条件的数据。最后,我们使用

closeConnection

方法关闭了数据库连接。

请注意,需要将

mydatabase.db

替换为实际的数据库文件名。另外,根据需求,可以根据表的结构和数据来调整示例代码中的参数。

希望这个封装的类对有所帮助!如果有任何疑问,请随时提问。


本文转载自: https://blog.csdn.net/No_Name_Cao_Ni_Mei/article/details/132869348
版权归原作者 wusp1994 所有, 如有侵权,请联系我们删除。

“【Node.js操作SQLite指南】”的评论:

还没有评论