在项目中操作 MySQL

devtools/2025/3/18 20:11:26/

随着Web应用程序的发展,与数据库进行交互成为了后端开发中的核心任务之一。Node.js作为一个异步事件驱动的JavaScript运行时,非常适合构建可扩展的网络应用。而MySQL作为最流行的关系型数据库管理系统之一,自然成为了许多项目的首选数据库。本文将介绍如何在Node.js项目中操作MySQL数据库,包括安装必要的依赖、连接数据库、执行基本的CRUD操作等。

一、准备工作

安装Node.js和MySQL

首先确保你的机器上已经安装了Node.js和MySQL。你可以从Node.js官网下载并安装最新版本的Node.js,并根据需要安装MySQL数据库

创建Node.js项目

打开终端或命令提示符,创建一个新的Node.js项目目录,并初始化npm项目:

mkdir my-node-mysql-app
cd my-node-mysql-app
npm init -y

安装mysql2模块

为了在Node.js中操作MySQL,我们需要安装mysql2模块。它提供了对MySQL数据库的完整支持,并且比原生的mysql模块性能更优。

npm install mysql2

二、连接到MySQL数据库

在项目根目录下创建一个名为db.js的文件,用于设置与MySQL数据库的连接。

const mysql = require('mysql2');const connection = mysql.createConnection({host: 'localhost',user: 'root', // 替换为你的MySQL用户名password: 'password', // 替换为你的MySQL密码database: 'test_db' // 替换为你的数据库名称
});connection.connect(err => {if (err) {console.error('Error connecting to the database:', err);return;}console.log('Connected to the database.');
});

这里我们使用mysql.createConnection方法来创建一个数据库连接。你需要替换userpassworddatabase字段为你自己的MySQL配置信息。

三、执行基本的CRUD操作

接下来,我们将展示如何使用Node.js执行MySQL的基本CRUD(Create, Read, Update, Delete)操作。

创建表

db.js中添加以下代码来创建一个简单的表:

const createTableQuery = `
CREATE TABLE IF NOT EXISTS users (id INT AUTO_INCREMENT PRIMARY KEY,name VARCHAR(100),age INT
)`;connection.query(createTableQuery, (err, results) => {if (err) {console.error('Error creating table:', err);return;}console.log('Table created successfully');
});

插入数据

使用INSERT INTO语句向表中插入数据:

const insertQuery = `INSERT INTO users (name, age) VALUES (?, ?)`;
const values = ['Alice', 25];connection.query(insertQuery, values, (err, results) => {if (err) {console.error('Error inserting data:', err);return;}console.log('Data inserted successfully');
});

查询数据

使用SELECT语句查询表中的数据:

const selectQuery = 'SELECT * FROM users';connection.query(selectQuery, (err, results) => {if (err) {console.error('Error selecting data:', err);return;}console.log('Users:', results);
});

更新数据

使用UPDATE语句更新表中的数据:

const updateQuery = `UPDATE users SET age = ? WHERE name = ?`;
const updateValues = [26, 'Alice'];connection.query(updateQuery, updateValues, (err, results) => {if (err) {console.error('Error updating data:', err);return;}console.log('Data updated successfully');
});

删除数据

使用DELETE语句删除表中的数据:

const deleteQuery = `DELETE FROM users WHERE name = ?`;
const deleteValue = ['Alice'];connection.query(deleteQuery, deleteValue, (err, results) => {if (err) {console.error('Error deleting data:', err);return;}console.log('Data deleted successfully');
});

四、关闭数据库连接

在完成所有操作之后,记得关闭数据库连接以释放资源:

connection.end(err => {if (err) {console.error('Error closing the connection:', err);return;}console.log('Database connection closed.');
});

或者,在每个操作完成后立即关闭连接:

// 示例:在查询操作完成后关闭连接
connection.query(selectQuery, (err, results) => {if (err) {console.error('Error selecting data:', err);return;}console.log('Users:', results);connection.end();
});

五、结语

感谢您的阅读!如果你有任何问题或想分享自己的经验,请在评论区留言交流!


http://www.ppmy.cn/devtools/168144.html

相关文章

大华HTTP协议在智联视频超融合平台中的接入方法

一. 大华HTTP协议介绍 大华HTTP协议是大华股份(Dahua Technology)为其安防监控设备开发的一套基于HTTP/HTTPS的通信协议,主要用于设备与客户端(如PC、手机、服务器)之间的数据交互。该协议支持设备管理、视频流获取、…

2025最新版Node.js安装教程:从环境搭建到镜像加速全解析

一、Node.js 简介 Node.js 是一个基于Chrome V8引擎的JavaScript运行时环境,采用事件驱动、非阻塞I/O模型,广泛应用于服务端开发、前端工具链构建等场景。其核心优势包括: 高性能:V8引擎编译执行JS代码,速度远超传统…

基于SpringBoot+Vue的幼儿园管理系统+LW示例参考

1.项目介绍 系统角色:管理员、教师、普通用户功能模块:用户管理、教师管理、班级管理、幼儿信息管理、会议记录管理、待办事项、职工考核、请假信息、缴费信息、体检管理、资源管理、原料管理、菜品信息管理等技术选型:SpringBoot&#xff0…

MATLAB中griddedInterpolant函数用法

目录 语法 说明 示例 一维插值 比较使用完整网格和网格向量的三维插值 使用默认网格进行插值 更精细的网格上的二维插值 一维外插 在同一网格上进行多组值插值 griddedInterpolant函数的功能是实现网格数据插值。 语法 F griddedInterpolant F griddedInterpolant…

vue3单独引用element-plus的Infinite Scroll无限滚动;vue3自定义指令

文章目录 1.正常单独使用element-plus其他功能组件2.引入类似与指令的插件3.自定义指令钩子 1.正常单独使用element-plus其他功能组件 引入即可使用 import { ElSelect, ElOption } from "element-plus"2.引入类似与指令的插件 需要先引入,再注册&…

【k8s002】k8s健康检查与故障诊断

k8s健康检查与故障诊断 ‌一、集群状态检查‌ ‌检查节点健康状态‌ kubectl get nodes -o wide # 查看节点状态及基本信息 kubectl describe node <node-name> # 分析节点详细事件&#xff08;如资源不足、网络异常&#xff09; kubectl top nodes …

OSPF与RIP联动实验

一、实验拓扑图 设计思路&#xff1a;划分了四个区域&#xff0c;配置好路由器接口IP地址后&#xff0c;首先使用OSPF实现全网互通。在R6上将会创建两个RIP&#xff0c;分别是RIP2和RIP22&#xff0c;在R7上创建一个RIP3&#xff0c;看其他路由器是否能够访问到R7的RIP路由表项…

算法练习5

今天这道题目主要是通过类来实现的&#xff0c;运用了运算符重载等相关知识。先写一个日期的类&#xff0c;然后根据每月的天数&#xff0c;将给出的n天进行减法&#xff0c;每减一次month&#xff0c;当month13时&#xff0c;month1,year,当n-当月的天数<0时&#xff0c;说…