Node.js - MySQL 数据插入
你好,未来的编程巨星们!今天,我们将踏上一段激动人心的旅程,探索Node.js和MySQL的世界。具体来说,我们将专注于如何使用Node.js将数据插入MySQL数据库。如果你是编程新手,不用担心 - 我会作为你的友好向导,一步一步地解释所有内容。那么,让我们开始吧!
Node.js和MySQL是什么?
在我们开始之前,让我们快速了解一下Node.js和MySQL:
- Node.js:它是一个强大的JavaScript运行时环境,允许你在计算机上运行JavaScript,而不仅仅是浏览器中。
- MySQL:它是一个流行的数据库系统,帮助存储和管理数据。
你可以把Node.js想象成一个厨师,而MySQL是一个大而有序的冰箱。我们将使用Node.js编写一些代码,将数据放入我们的MySQL冰箱!
设置开发环境
首先,我们需要设置我们的厨房(我的意思是,我们的开发环境)。以下是你需要做的:
- 从官方网站(nodejs.org)安装Node.js
- 从mysql.com安装MySQL
- 在终端运行以下命令安装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('已连接到数据库。');
});
让我们分解一下:
- 我们需要之前安装的MySQL模块。
- 我们使用
mysql.createConnection()
创建一个连接,提供我们的数据库详细信息。 - 我们使用
connection.connect()
实际连接到数据库。 - 如果有错误,我们记录它。否则,我们确认已连接。
简单的INSERT查询
现在我们已经连接,让我们插入一些数据!假设我们有一个名为users
的表,包含id
、name
和email
列。以下是如何插入一个新用户:
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);
});
这里发生了什么?
- 我们创建了一个对象
newUser
,包含我们想要插入的数据。 - 我们使用
connection.query()
向数据库发送一个SQL查询。 - 查询中的
?
是一个占位符。MySQL将其替换为我们的newUser
对象。 - 如果成功,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);
});
这里有什么新内容:
- 我们创建了一个用户对象数组。
- 我们使用
users.map()
将我们的数组转换为MySQL期望的格式。 -
?
占位符现在代表多组值。 -
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);
});
这里有什么特别的?
- 我们将我们的SQL查询和数据分开。
- 查询中的
?
占位符代表我们的数据将放在哪里。 - 我们将
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