当前位置: 首页 > news >正文

(基础篇)通过node增删改查连接mysql数据库

 

一定要会最基础的sql建表一定要会最基础的sql建表一定要会最基础的sql建表

 首先说一下准备工作

一、准备工具
1.mysql数据库+Navicat可视化工具(数据库表单已经建好)

我这里用的小皮工具直接开启的本地mysql 

2.vscode (不用说基本上都有)

3.node.js 环境 (自行安装)

二 、准备工作
1.再vscode中新建文件夹,右键文件夹选择集成终端中打开

2.输入初始化命令:npm init -y

3.安装express 模块:npm i express

4.安装mysql模块:npm i mysql

安装完毕如下图显示:

 

三、编写代码

新建app.js文件

我直接把写好的发出来了,连接数据库内容根据实际内容改变

const express = require('express');
const bodyParser = require('body-parser');
const mysql = require('mysql');
const app = express();app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: true
}));// 创建数据库连接池  
const pool = mysql.createPool({user: 'root',password: 'root',host: 'localhost',database: 'sys'
});
//添加
app.post('/user/add', (req, res) => {const {name,avatar,longitude,latitude} = req.body;if (!name || !avatar) {return res.status(400).send('名字和头像必填');}let sqlQuery = 'INSERT INTO users (name, avatar';let values = [name, avatar];if (longitude !== undefined && latitude !== undefined) {sqlQuery += ', longitude, latitude)';values.push(longitude, latitude);} else {sqlQuery += ')';}// 使用参数化查询来防止 SQL 注入  pool.query(sqlQuery + ' VALUES (?, ?, ?, ?)', values, (err) => {if (err) {console.error('执行 SQL 查询时出错:', err);res.status(500).send('内部服务器错误');} else {console.log('SQL 语句执行成功');res.send({message: '添加成功',code: 200});}});
});
// 编辑接口    
app.post('/user/edit/:user_id', (req, res) => {const {name,avatar,longitude,latitude,user_id} = req.body;// 查找用户记录  pool.query('SELECT * FROM users WHERE user_id = ?', [user_id], (err, results) => {if (err) {console.error('查找用户记录时出错:', err);return res.status(500).send('内部服务器错误');}if (results.length === 0) {return res.status(404).send('未找到用户记录');}const user = results[0];// 构建 SQL 更新语句    let sqlQuery = 'UPDATE users SET name = ?, avatar = ?';let sqlValues = [name, avatar];if (longitude) {sqlQuery += ', longitude = ?';sqlValues.push(longitude);}if (latitude) {sqlQuery += ', latitude = ?';sqlValues.push(latitude);}sqlQuery += ' WHERE user_id = ?';sqlValues.push(user_id);// 执行 SQL 更新语句    pool.query(sqlQuery, sqlValues, (err) => {if (err) {console.error('执行 SQL 更新时出错:', err);return res.status(500).send('内部服务器错误');} else {console.log('SQL 语句执行成功');res.send({message: '编辑成功',code: 200});}});});
});
// 修改用户状态的接口  
app.post('/user/updateStatus/:user_id', (req, res) => {const {status} = req.body; // 从请求体中提取状态参数  const user_id = req.params.user_id; // 从路由参数中获取用户 ID  // 构建 SQL 更新语句,只更新 status 字段  const sqlQuery = 'UPDATE users SET status = ? WHERE user_id = ?';const sqlValues = [status, user_id];// 执行 SQL 更新语句  pool.query(sqlQuery, sqlValues, (err) => {if (err) {console.error('执行 SQL 更新时出错:', err);return res.status(500).send('内部服务器错误');} else {console.log('SQL 语句执行成功');res.send({message: '状态更新成功',code: 200}); // 或者其他适当的响应消息  }});
});
// 删除用户接口  
app.delete('/user/delete/:user_id', (req, res) => {const userId = req.params.user_id;if (!userId) {return res.status(400).send('Missing required fields');}// 构建 SQL 查询语句  const sqlQuery = 'DELETE FROM users WHERE user_id = ?';// 执行 SQL 查询  pool.query(sqlQuery, [userId], (err) => {if (err) {console.error('执行 SQL 查询时出错:', err);res.status(500).send('内部服务器错误');} else {console.log('SQL 语句执行成功');res.send({message: '删除成功',code: 200});}});
});
//获取用户列表
app.get('/user/list', (req, res) => {pool.query('SELECT * FROM users', (err, results) => {if (err) {console.log(err, '如果为null,sql语句执行成功');res.status(500).send('查询失败');} else {res.send({record: results,message: '查询成功',code: 200});}});
});process.on('unhandledRejection', (reason, promise) => {console.error('未处理的 Promise 拒绝:', reason);
});app.listen(3000, () => {console.log('服务器在3000端口开启。。。。。');
});

进入文件夹运行 node .\app.js

运行成功会出现这句话,现在就可以直接调用接口了

相关文章:

(基础篇)通过node增删改查连接mysql数据库

一定要会最基础的sql建表一定要会最基础的sql建表一定要会最基础的sql建表 首先说一下准备工作 一、准备工具 1.mysql数据库Navicat可视化工具(数据库表单已经建好) 我这里用的小皮工具直接开启的本地mysql 2.vscode (不用说基本上都有) 3.node.js …...

做为一个产品经理带你详细了解--动态面板的使用

📚📚 🏅我是bing人,一个在CSDN分享笔记的博主。📚📚 🌟在这里,我要推荐给大家我的专栏《Axure》。🎯🎯 🚀无论你是编程小白,还是有一…...

严世芸龟法养生经

文章目录 严世芸理念荤素搭配,不偏嗜动静结合心平气和 龟息法 严世芸 严世芸,出生于1940年,现任上海中医药大学的主任医师,教授。他父亲是近代上海有名的中医,他又是著名医家张伯臾的亲传弟子。 从小就在父亲诊室里长…...

基于OHTPPS实现网站HTTPS访问

前言 笔者近期为网站配置HTTPS的域名,查找了大量方案,最近寻得一个不错的解决方式,通过OHTTPS获取免费的证书并部署到阿里云服务器上。 步骤 到OHTTPS官网注册账号 官方地址如下,读者可以先行到官网注册一下账号,笔…...

python|获取接口请求耗时

你想知道我们请求一个url的时候,握手和请求资源分别占用多长时间么?今天我们使用python写个小案例来看看吧。 项目展示 打开项目,修改hosts、port、methods以及url的变量,即可运行python程序便可获得该页面的详细信息的时间&…...

[PyTorch][chapter 7][李宏毅深度学习][深度学习简介]

前言: 深度学习常用的开发平台 TensorFlow torch theano caffe DSSTNE mxnet libdnn CNTK 目录: 1: 深度学习发展历史 2: DeepLearning 工程简介 3: DNN 简介 一 发展历史 二 DeepLearning 工程简介 深度学习三…...

【go语言实践一】go语言基础篇一

go语言基础 一些go语言学习辅助地址go代码运行方法go run xxx.gogo build xxx.go go语言编码规范go语言的{}的写法强制 go语言注释 go语言变量定义多个全局变量的声明 go语言数据类型基本数据类型基本数据类型的转换(其他)基本数据类型转string1、使用fmt.Sprintf(…...

深度学习 Day12——P1实现mnist手写数字识别

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 | 接辅导、项目定制 文章目录 前言1 我的环境2 代码实现与执行结果2.1 前期准备2.1.1 引入库2.1.2 设置GPU(如果设备上支持GPU就使用GPU,否则使用C…...

【Docker实战】基于Dockerfile搭建LNMP+wordpress

一、项目背景和要求 公司在实际的生产环境中,需要使用Docker 技术在一台主机上创建LNMP服务并运行Wordpress网站平台。 然后对此服务进行相关的性能调优和管理工作 二、架构: nginx172.111.0.10docker-nginxmysql172.111.0.20docker-mysqlPHP172.111…...

【桌面应用开发】Tauri是什么?基于Rust的桌面应用

自我介绍 做一个简单介绍,酒架年近48 ,有20多年IT工作经历,目前在一家500强做企业架构.因为工作需要,另外也因为兴趣涉猎比较广,为了自己学习建立了三个博客,分别是【全球IT瞭望】,【…...

PHP的协程是什么?

PHP 的协程是一种轻量级的线程(或任务)实现,允许在一个进程中同时执行多个协程,但在任意时刻只有一个协程处于执行状态。协程可以看作是一种用户空间线程,由程序员显式地管理,而不是由操作系统内核进行调度…...

three.js 入门三:buffergeometry贴图属性(position、index和uvs)

环境: three.js 0.159.0 一、基础知识 geometry:决定物体的几何形状、轮廓;material:决定物体呈现的色彩、光影特性、贴图皮肤;mesh:场景中的物体,由geometry和materia组成;textu…...

Initial用法-FPGA入门3

Initial是什么 FPGA Initial是一种在FPGA中进行初始化的方法。在FPGA设备上,初始值决定了逻辑门的状态和寄存器的初始值。FPGA Initial可以通过设置初始值来控制电路在上电后的初始状态。 Initial的作用 2.1,控制电路启动时的初始状态 通过设置FPGA Ini…...

perl脚本中使用eval函数执行可能有异常的操作

perl脚本中有时候执行的操作可能会引发异常&#xff0c;为了直观的说明&#xff0c;这里举一个json反序列化的例子&#xff0c;脚本如下&#xff1a; #! /usr/bin/perl use v5.14; use JSON; use Data::Dumper;# 读取json字符串数据 my $json_str join(, <DATA>); # 反…...

『Redis』在Docker中快速部署Redis并进行数据持久化挂载

&#x1f4e3;读完这篇文章里你能收获到 在Docke中快速部署Redis如何将Redis的数据进行持久化 文章目录 一、拉取镜像二、创建挂载目录1 宿主机与容器挂载映射2 挂载命令执行 三、创建容器—运行Redis四、查看运行情况 一、拉取镜像 版本号根据需要自己选择&#xff0c;这里以…...

ubuntu创建apt-mirror本地仓库

首先创建apt-mirror的服务端&#xff0c;也就是存储所有apt-get下载的文件和依赖。大约需要300G&#xff0c;预留400G左右空间就可以开始了。 安装ubuntu省略&#xff0c;用的是ubuntu202204 ubuntu挂载硬盘&#xff08;不需要的可以跳过&#xff09;: #下载挂载工具 sudo apt…...

计算机网络 internet应用 (水

ARPA net ---Internet 前身 发展史: ARPA net 第一个主干网..美国军方NSFnet 美国国家科学基金会NSFANSnet 美国全国 (internet 叫法开始出现) 第二代互联网(现在() IP地址 IP地址 最高管理机构 - InterNIC IPV4 32位 IPV6 128位 域名 起名 解析 domain name sys…...

【ChatGLM3】第三代大语言模型多GPU部署指南

关于ChatGLM3 ChatGLM3是智谱AI与清华大学KEG实验室联合发布的新一代对话预训练模型。在第二代ChatGLM的基础之上&#xff0c; 更强大的基础模型&#xff1a; ChatGLM3-6B 的基础模型 ChatGLM3-6B-Base 采用了更多样的训练数据、更充分的训练步数和更合理的训练策略。在语义、…...

云原生Kubernetes系列 | Docker/Kubernetes的卷管理

云原生Kubernetes系列 | Docker/Kubernetes的卷管理 1. Docker卷管理2. Kubernetes卷管理2.1. 本地存储2.1.1. emptyDir2.1.2. hostPath2.2. 网络存储2.2.1. 使用NFS2.2.2. 使用ISCSI2.3. 持久化存储2.3.1. PV和PVC2.3.2. 访问模式2.3.3. 回收策略1. Docker卷管理...

Java实现快速排序算法

快速排序算法 &#xff08;1&#xff09;概念&#xff1a;快速排序是指通过一趟排序将要排序的数据分割成独立的两部分&#xff0c;其中一部分的所有数据都比另外一部分的所有数据都要小&#xff0c;然后再按此方法对这两部分数据分别进行快速排序。整个排序过程可以递归进行&…...

DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI

前一阵子在百度 AI 开发者大会上&#xff0c;看到基于小智 AI DIY 玩具的演示&#xff0c;感觉有点意思&#xff0c;想着自己也来试试。 如果只是想烧录现成的固件&#xff0c;乐鑫官方除了提供了 Windows 版本的 Flash 下载工具 之外&#xff0c;还提供了基于网页版的 ESP LA…...

HBuilderX安装(uni-app和小程序开发)

下载HBuilderX 访问官方网站&#xff1a;https://www.dcloud.io/hbuilderx.html 根据您的操作系统选择合适版本&#xff1a; Windows版&#xff08;推荐下载标准版&#xff09; Windows系统安装步骤 运行安装程序&#xff1a; 双击下载的.exe安装文件 如果出现安全提示&…...

C++ 求圆面积的程序(Program to find area of a circle)

给定半径r&#xff0c;求圆的面积。圆的面积应精确到小数点后5位。 例子&#xff1a; 输入&#xff1a;r 5 输出&#xff1a;78.53982 解释&#xff1a;由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982&#xff0c;因为我们只保留小数点后 5 位数字。 输…...

微信小程序云开发平台MySQL的连接方式

注&#xff1a;微信小程序云开发平台指的是腾讯云开发 先给结论&#xff1a;微信小程序云开发平台的MySQL&#xff0c;无法通过获取数据库连接信息的方式进行连接&#xff0c;连接只能通过云开发的SDK连接&#xff0c;具体要参考官方文档&#xff1a; 为什么&#xff1f; 因为…...

企业如何增强终端安全?

在数字化转型加速的今天&#xff0c;企业的业务运行越来越依赖于终端设备。从员工的笔记本电脑、智能手机&#xff0c;到工厂里的物联网设备、智能传感器&#xff0c;这些终端构成了企业与外部世界连接的 “神经末梢”。然而&#xff0c;随着远程办公的常态化和设备接入的爆炸式…...

Mobile ALOHA全身模仿学习

一、题目 Mobile ALOHA&#xff1a;通过低成本全身远程操作学习双手移动操作 传统模仿学习&#xff08;Imitation Learning&#xff09;缺点&#xff1a;聚焦与桌面操作&#xff0c;缺乏通用任务所需的移动性和灵活性 本论文优点&#xff1a;&#xff08;1&#xff09;在ALOHA…...

代码规范和架构【立芯理论一】(2025.06.08)

1、代码规范的目标 代码简洁精炼、美观&#xff0c;可持续性好高效率高复用&#xff0c;可移植性好高内聚&#xff0c;低耦合没有冗余规范性&#xff0c;代码有规可循&#xff0c;可以看出自己当时的思考过程特殊排版&#xff0c;特殊语法&#xff0c;特殊指令&#xff0c;必须…...

Proxmox Mail Gateway安装指南:从零开始配置高效邮件过滤系统

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐&#xff1a;「storms…...

毫米波雷达基础理论(3D+4D)

3D、4D毫米波雷达基础知识及厂商选型 PreView : https://mp.weixin.qq.com/s/bQkju4r6med7I3TBGJI_bQ 1. FMCW毫米波雷达基础知识 主要参考博文&#xff1a; 一文入门汽车毫米波雷达基本原理 &#xff1a;https://mp.weixin.qq.com/s/_EN7A5lKcz2Eh8dLnjE19w 毫米波雷达基础…...

【前端异常】JavaScript错误处理:分析 Uncaught (in promise) error

在前端开发中&#xff0c;JavaScript 异常是不可避免的。随着现代前端应用越来越多地使用异步操作&#xff08;如 Promise、async/await 等&#xff09;&#xff0c;开发者常常会遇到 Uncaught (in promise) error 错误。这个错误是由于未正确处理 Promise 的拒绝&#xff08;r…...