Node.js - MySQL 数据插入

你好,未来的编程巨星们!今天,我们将踏上一段激动人心的旅程,探索Node.js和MySQL的世界。具体来说,我们将专注于如何使用Node.js将数据插入MySQL数据库。如果你是编程新手,不用担心 - 我会作为你的友好向导,一步一步地解释所有内容。那么,让我们开始吧!

Node.js - MySQL Insert Into

Node.js和MySQL是什么?

在我们开始之前,让我们快速了解一下Node.js和MySQL:

  1. Node.js:它是一个强大的JavaScript运行时环境,允许你在计算机上运行JavaScript,而不仅仅是浏览器中。
  2. MySQL:它是一个流行的数据库系统,帮助存储和管理数据。

你可以把Node.js想象成一个厨师,而MySQL是一个大而有序的冰箱。我们将使用Node.js编写一些代码,将数据放入我们的MySQL冰箱!

设置开发环境

首先,我们需要设置我们的厨房(我的意思是,我们的开发环境)。以下是你需要做的:

  1. 从官方网站(nodejs.org)安装Node.js
  2. 从mysql.com安装MySQL
  3. 在终端运行以下命令安装Node.js的MySQL模块:
npm install mysql

太好了!现在我们已经准备好了所有的材料。让我们开始烹饪……我是说,开始编码!

使用Node.js进行数据插入

建立连接

在我们能够插入数据之前,我们需要连接到我们的MySQL数据库。以下是如何做到这一点:

const mysql = require('mysql');

const connection = mysql.createConnection({
host: 'localhost',
user: 'your_username',
password: 'your_password',
database: 'your_database_name'
});

connection.connect((err) => {
if (err) {
console.error('连接数据库时出错:' + err.stack);
return;
}
console.log('已连接到数据库。');
});

让我们分解一下:

  1. 我们需要之前安装的MySQL模块。
  2. 我们使用mysql.createConnection()创建一个连接,提供我们的数据库详细信息。
  3. 我们使用connection.connect()实际连接到数据库。
  4. 如果有错误,我们记录它。否则,我们确认已连接。

简单的INSERT查询

现在我们已经连接,让我们插入一些数据!假设我们有一个名为users的表,包含idnameemail列。以下是如何插入一个新用户:

const newUser = { name: 'John Doe', email: '[email protected]' };

connection.query('INSERT INTO users SET ?', newUser, (error, results) => {
if (error) throw error;
console.log('已添加新用户,ID为:' + results.insertId);
});

这里发生了什么?

  1. 我们创建了一个对象newUser,包含我们想要插入的数据。
  2. 我们使用connection.query()向数据库发送一个SQL查询。
  3. 查询中的?是一个占位符。MySQL将其替换为我们的newUser对象。
  4. 如果成功,MySQL返回一些结果,包括新记录的ID。

插入多条记录

如果我们想一次添加多个用户呢?我们也可以做到!

const users = [
{ name: 'Alice', email: '[email protected]' },
{ name: 'Bob', email: '[email protected]' },
{ name: 'Charlie', email: '[email protected]' }
];

connection.query('INSERT INTO users (name, email) VALUES ?', [users.map(user => [user.name, user.email])], (error, results) => {
if (error) throw error;
console.log('插入的记录数:' + results.affectedRows);
});

这里有什么新内容:

  1. 我们创建了一个用户对象数组。
  2. 我们使用users.map()将我们的数组转换为MySQL期望的格式。
  3. ?占位符现在代表多组值。
  4. results.affectedRows告诉我们插入了多少条记录。

使用预处理语句INSERT

现在,让我们提升一下我们的游戏,使用预处理语句。这些就像是可以重复使用的食谱,每次只是改变食材(数据)。

const sql = "INSERT INTO users (name, email) VALUES (?, ?)";
const values = ['David', '[email protected]'];

connection.query(sql, values, (error, results) => {
if (error) throw error;
console.log('已添加新用户,ID为:' + results.insertId);
});

这里有什么特别的?

  1. 我们将我们的SQL查询和数据分开。
  2. 查询中的?占位符代表我们的数据将放在哪里。
  3. 我们将values数组作为query()的一个单独参数传递。

这种方法更安全,可以防止SQL注入攻击。就像使用一个值得信赖的食谱,而不是随意地将食材放在一起!

重用预处理语句

预处理语句的真正力量在于我们可以重用它:

const sql = "INSERT INTO users (name, email) VALUES (?, ?)";
const users = [
['Eva', '[email protected]'],
['Frank', '[email protected]'],
['Grace', '[email protected]']
];

users.forEach(user => {
connection.query(sql, user, (error, results) => {
if (error) throw error;
console.log('已添加新用户,ID为:' + results.insertId);
});
});

在这里,我们为每个用户使用相同的SQL“食谱”,每次只是改变“食材”(值)。

关闭连接

当你完成烹饪时,别忘了关闭厨房!我是说,在完成查询后关闭数据库连接:

connection.end((err) => {
if (err) {
console.error('关闭数据库连接时出错:' + err.stack);
return;
}
console.log('数据库连接已关闭。');
});

这确保我们不会留下任何打开的连接,这可能会减慢我们的应用程序或数据库服务器的速度。

方法总结

以下是我们在本文中学到的方法的快速参考表:

方法 描述
mysql.createConnection() 创建到MySQL数据库的连接
connection.connect() 建立数据库连接
connection.query() 执行SQL查询
connection.end() 关闭数据库连接

结论

恭喜你!你已经学会了如何使用Node.js将数据插入MySQL数据库。我们涵盖了简单插入、多记录插入,甚至预处理语句。记住,熟能生巧,所以不要害怕尝试这些概念。

在我多年的教学经验中,我发现最好的学习方式就是实践。所以,为什么不创建一个小项目呢?也许是一个简单的应用程序,用于在数据库中存储你最喜欢的食谱?这样,你可以练习你的新技能,而且永远不会丢失奶奶的秘密饼干食谱!

快乐编码,愿你的数据库总是保持良好的规范化!

Credits: Image by storyset