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

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

ubuntu创建apt-mirror本地仓库
首先创建apt-mirror的服务端,也就是存储所有apt-get下载的文件和依赖。大约需要300G,预留400G左右空间就可以开始了。 安装ubuntu省略,用的是ubuntu202204 ubuntu挂载硬盘(不需要的可以跳过): #下载挂载工具 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的基础之上, 更强大的基础模型: 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实现快速排序算法
快速排序算法 (1)概念:快速排序是指通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序。整个排序过程可以递归进行&…...

TDengine 快速体验(Docker 镜像方式)
简介 TDengine 可以通过安装包、Docker 镜像 及云服务快速体验 TDengine 的功能,本节首先介绍如何通过 Docker 快速体验 TDengine,然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker,请使用 安装包的方式快…...
Java多线程实现之Callable接口深度解析
Java多线程实现之Callable接口深度解析 一、Callable接口概述1.1 接口定义1.2 与Runnable接口的对比1.3 Future接口与FutureTask类 二、Callable接口的基本使用方法2.1 传统方式实现Callable接口2.2 使用Lambda表达式简化Callable实现2.3 使用FutureTask类执行Callable任务 三、…...
鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/
使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题:docker pull 失败 网络不同,需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...
.Net Framework 4/C# 关键字(非常用,持续更新...)
一、is 关键字 is 关键字用于检查对象是否于给定类型兼容,如果兼容将返回 true,如果不兼容则返回 false,在进行类型转换前,可以先使用 is 关键字判断对象是否与指定类型兼容,如果兼容才进行转换,这样的转换是安全的。 例如有:首先创建一个字符串对象,然后将字符串对象隐…...

深入浅出深度学习基础:从感知机到全连接神经网络的核心原理与应用
文章目录 前言一、感知机 (Perceptron)1.1 基础介绍1.1.1 感知机是什么?1.1.2 感知机的工作原理 1.2 感知机的简单应用:基本逻辑门1.2.1 逻辑与 (Logic AND)1.2.2 逻辑或 (Logic OR)1.2.3 逻辑与非 (Logic NAND) 1.3 感知机的实现1.3.1 简单实现 (基于阈…...
苹果AI眼镜:从“工具”到“社交姿态”的范式革命——重新定义AI交互入口的未来机会
在2025年的AI硬件浪潮中,苹果AI眼镜(Apple Glasses)正在引发一场关于“人机交互形态”的深度思考。它并非简单地替代AirPods或Apple Watch,而是开辟了一个全新的、日常可接受的AI入口。其核心价值不在于功能的堆叠,而在于如何通过形态设计打破社交壁垒,成为用户“全天佩戴…...

论文阅读笔记——Muffin: Testing Deep Learning Libraries via Neural Architecture Fuzzing
Muffin 论文 现有方法 CRADLE 和 LEMON,依赖模型推理阶段输出进行差分测试,但在训练阶段是不可行的,因为训练阶段直到最后才有固定输出,中间过程是不断变化的。API 库覆盖低,因为各个 API 都是在各种具体场景下使用。…...
【Elasticsearch】Elasticsearch 在大数据生态圈的地位 实践经验
Elasticsearch 在大数据生态圈的地位 & 实践经验 1.Elasticsearch 的优势1.1 Elasticsearch 解决的核心问题1.1.1 传统方案的短板1.1.2 Elasticsearch 的解决方案 1.2 与大数据组件的对比优势1.3 关键优势技术支撑1.4 Elasticsearch 的竞品1.4.1 全文搜索领域1.4.2 日志分析…...

springboot 日志类切面,接口成功记录日志,失败不记录
springboot 日志类切面,接口成功记录日志,失败不记录 自定义一个注解方法 import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target;/***…...

VisualXML全新升级 | 新增数据库编辑功能
VisualXML是一个功能强大的网络总线设计工具,专注于简化汽车电子系统中复杂的网络数据设计操作。它支持多种主流总线网络格式的数据编辑(如DBC、LDF、ARXML、HEX等),并能够基于Excel表格的方式生成和转换多种数据库文件。由此&…...