Node.js操作MySQL数据库教程
需积分: 0 180 浏览量
更新于2024-08-31
收藏 95KB PDF 举报
"从零学习node.js之mysql数据库的操作(五)"
在Node.js环境中操作MySQL数据库是一项常见的任务,尤其对于构建后端服务来说至关重要。本文将深入探讨如何使用Node.js与MySQL进行交互,包括基本的数据库连接、CRUD操作以及处理异步查询。
1. 安装MySQL模块
在开始之前,确保已经安装了Node.js环境,然后通过npm(Node包管理器)安装`mysql`模块。在项目目录下运行以下命令:
```bash
npm install mysql --save-dev
```
2. 连接数据库
安装完成后,导入`mysql`模块并创建数据库连接。以下是一个简单的示例:
```javascript
var mysql = require('mysql');
var conn = mysql.createConnection({
host: '127.0.0.1',
user: 'root',
password: '123',
database: 'test'
});
conn.connect(function(err) {
if (err) throw err;
console.log('连接成功!');
});
// 其他数据库操作...
conn.end(function(err) {
if (err) throw err;
console.log('连接已关闭');
});
```
上述代码创建了一个到本地MySQL服务器的连接,指定用户名、密码和数据库名。`connect`方法会尝试建立连接,并在成功或失败时触发回调函数。最后,使用`end`方法关闭连接。
3. CRUD操作
CRUD代表创建(Create)、读取(Read)、更新(Update)和删除(Delete),这是数据库操作的基本动作。
- 创建(Create):向数据库插入新数据。
```javascript
conn.query('INSERT INTO user (username, password, email) VALUES (?, ?, ?)', ['newUser', 'newPassword', 'newEmail@example.com'], function (err, result) {
if (err) throw err;
console.log('新用户已创建');
});
```
- 读取(Read):查询数据库获取数据。
```javascript
conn.query('SELECT * FROM user', function (err, results) {
if (err) throw err;
console.log(results);
});
```
- 更新(Update):修改数据库中的记录。
```javascript
conn.query('UPDATE user SET password = ? WHERE username = ?', ['updatedPassword', 'newUser'], function (err) {
if (err) throw err;
console.log('密码已更新');
});
```
- 删除(Delete):从数据库中删除记录。
```javascript
conn.query('DELETE FROM user WHERE username = ?', ['newUser'], function (err) {
if (err) throw err;
console.log('用户已删除');
});
```
4. 异步查询处理
`query`方法是非阻塞的,这意味着多个查询可能并发执行,而不是按照它们在代码中的顺序。如果需要确保特定查询顺序执行,可以使用Promise链或者使用`async/await`语法。
```javascript
(async function() {
await conn.query('SQL STATEMENT 1');
await conn.query('SQL STATEMENT 2');
// ...
})();
```
5. 错误处理
在进行数据库操作时,务必妥善处理可能出现的错误,例如网络问题、无效的SQL语句等。通常,我们将错误处理放在回调函数的第一个参数或使用try/catch结构。
6. 事务处理
对于涉及多条数据库语句的操作,可以使用事务来确保数据的一致性。事务可以保证所有操作都成功完成,或者在任何一步失败时回滚所有更改。
```javascript
conn.beginTransaction(function(err) {
if (err) throw err;
conn.query('SQL STATEMENT 1', function (err) {
if (err) {
conn.rollback(function() {
throw err;
});
}
});
conn.query('SQL STATEMENT 2', function (err) {
if (err) {
conn.rollback(function() {
throw err;
});
} else {
conn.commit(function(err) {
if (err) {
conn.rollback(function() {
throw err;
});
} else {
console.log('事务完成');
}
});
}
});
});
```
通过以上步骤,你可以开始在Node.js中使用MySQL进行基本的数据操作。随着需求的增长,你还可以探索更高级的主题,如连接池、预处理语句和性能优化。了解这些概念将使你在开发Node.js应用程序时更加得心应手。
2022-01-22 上传
2022-12-11 上传
2022-05-23 上传
2023-06-08 上传
2023-05-16 上传
2023-06-28 上传
2024-11-22 上传
2023-05-04 上传
2023-04-06 上传
weixin_38550334
- 粉丝: 2
- 资源: 952
最新资源
- acfplot.m:计算并绘制输入序列自相关的估计值-matlab开发
- 行业文档-设计装置-正和平台.zip
- novious-fw:最初用于Novious网页版项目PHP框架,构建于新浪云引擎之上,部分代码未完善。
- clicks_calculator
- Emoji-Pup-crx插件
- AI-Logic-Based-Agent:使用后继状态公理,智能代理尝试达到其目标
- bookstore,如何查看java源码,java底层源码图解
- meal-planner-node:我们的 springboot 应用程序在 node.js 和 angular 中的简化版本
- navgationkit-docs-sphinx:Autolabor导航套件官方使用手册
- ssc
- actions:内置Logux动作的类型和动作创建者
- InLineQuestion,java源码网站,javaoa源码要多久
- blood-alcohol-calculator:使用FlutterDart构建的BAC计算器
- Frontend-Boilerplate:Frontent Boiler Plate - 使用 NPM、Bower、Gulp、Jade、Scss
- study-php:课程《网页设计与开发》-罗维老师
- iathook:Windows kernelmode和usermode IAT挂钩