📜  db.each store rowa - Javascript (1)

📅  最后修改于: 2023-12-03 15:30:23.275000             🧑  作者: Mango

Node.js 数据库查询介绍之 db.each

简介

在 Node.js 中,我们通常使用 SQLite 数据库进行数据存储和查询。db.each 是 Node.js 中 SQLite 数据库查询的一个方法,它可以根据指定的 SQL 查询语句依次处理每一条查询结果。

语法
db.each(sql, [param, ...], [callback], [complete])
  • sql: 要执行的 SQL 查询语句。
  • param: SQL 查询语句中的参数列表。
  • callback: 每次处理一个查询结果时的回调函数。
  • complete: 所有查询结果处理完成时的回调函数。
用法

以下是一个简单的示例,展示了如何使用 db.each 查询 SQLite 数据库中的数据:

const sqlite3 = require('sqlite3').verbose();
const db = new sqlite3.Database('mydb.db');

db.serialize(() => {
  db.run('CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT)');

  db.run('INSERT INTO users (name) VALUES (?)', 'John');
  db.run('INSERT INTO users (name) VALUES (?)', 'Jane');
  db.run('INSERT INTO users (name) VALUES (?)', 'Jim');

  db.each('SELECT * FROM users', (err, row) => {
    console.log(`${row.name} has the ID ${row.id}`);
  });

  db.close();
});

该示例代码中首先创建了一个名为 users 的表格,并向其中插入了三条数据。接着通过 db.each 方法查询了该表格中的所有数据,并在每次处理一个查询结果时打印了其内容。

参数说明

在使用 db.each 方法时,我们需要了解其各个参数的含义:

  • sql:需要执行的 SQL 查询语句。其中,用 ? 代替实际的参数,以便在后面的参数列表中传入。
  • param:在 SQL 查询语句中所需的参数列表。若 SQL 查询语句中没有参数,该参数可以省略。
  • callback:每次处理一个查询结果时的回调函数。该函数接受两个参数:一个错误对象 err 和一个返回查询结果的对象 row
  • complete:所有查询结果处理完成时的回调函数。该函数不接受任何参数。
注意事项

在使用 db.each 方法时,需要注意以下几个问题:

  • db.each 方法是一个异步方法,它不会阻塞程序的执行,而是在查询结果处理完后调用回调函数进行处理。因此,在调用 db.each 方法后,应该立即调用 db.close 方法以关闭数据库连接。
  • 在回调函数中处理查询结果时,应该注意错误处理。如果出现了错误,应该在回调函数中对其进行处理,以免影响程序的正常执行。
  • 在查询语句中使用 WHERE 子句时,要特别注意 SQL 注入攻击的问题。为了避免 SQL 注入攻击,应该使用占位符 ? 来代替实际参数,以便在后续的参数列表中传入。同时应该注意输入进行合适的校验和过滤,以防止恶意输入的注入攻击。
参考链接