Express框架连接MySQL数据库操作

news2024/12/24 8:55:39

         在上一篇中已经在Node.js中引入使用了mysql模块进行数据库的基本操作,在本篇当中在Express框架中来连接数据库以及操作数据库;

Express 项目环境

        这里是通过全局安装Express框架生产的项目环境,也可以通过局部安装的方式,安装过程可以在往期的篇目中去看一下:

express expSqlPro
npm install

 局部安装mysql模块;

npm install mysql -S

 连接数据库

        首先引入mysql模块,通过createConnection()方法来建立与服务器数据库连接的对象,再通过connect()方法来连接数据库;然后将这个连接数据库模块进行导出,供其他程序require使用;

1 . 在 /public/javascript/ 的目录下创建这个文件 conn_sql.js 编写代码:

// 引入模块
const mysql = require('mysql');
// 建立连接对象
const conn = mysql.createConnection({
    host:'localhost',
    user:'root',
    password:'root',
    database:'syan'
})
// 连接数据库
conn.connect(function(err){
    if(err){ console.log("连接失败!") };
    console.log("连接成功,当前连接线程ID:"+conn.threadId);
})
//导出
module.exports = conn;

2 . 测试引入打印:在 /routes/index.js文件中编写 ;

const conn= require('../public/javascripts/conn_sql')
npm start 


 操作数据库

数据库已经连接成功了,下面要来操作数据库的增删查改:

        在 routes/index.js 文件中编写路由文件,引入conn_sql.js文件,通过请求url http://127.0.0.1:3000/check 时,进行查询数据库的数据操作:

// index.js文件

var express = require('express');
const conn = require('../public/javascripts/conn_sql');
var router = express.Router();

/* GET home page. */
router.get('/', function(req, res, next) {
  res.render('index', { title: 'Express' });
});

/* 查询数据库数据操作 */ 
router.get('/check',function(req,res){
  const sql = "SELECT * FROM sen";
  conn.query(sql,function(err,result){
    if(err){ console.log("查询语句执行异常"); }
    res.send(result);
  })
})

module.exports = router;

通过命令 npm start 将项目跑起来:

 在浏览器中输入请求url地址: http://127.0.0.1:3000/check 或 http://localhost:3000/check

         以上就进行了数据库的查询操作;

        通过请求url 往数据库里添加数据操作;添加一条数据 < sName:SEN ,sAge:18 >

1. 代码编写

/* 插入表数据操作 */
router.get('/insert',function(req,res){
  const sql = "INSERT INTO sen VALUES (?,?)";
  const sqlParams = ['SEN','18'];
  conn.query(sql,sqlParams,function(err){
    if(err){ console.log("查询语句执行异常"); }
    res.send({error:0 ,message: 'success'});
  })
})

2 .测试运行 在浏览器中输入请求url地址:http://127.0.0.1:3000/insert

          通过请求url 往数据库里修改数据操作;将这一条数据 < sName:LIN ,sAge:18 > 修改为 

< sName:LIN ,sAge:20 >的数据内容;

1.代码编写

/* 修改表数据操作 */ 
router.get('/update',function(req,res){
  const sql = "UPDATE sen SET sAge = ? WHERE sName = ?";
  const sqlParams = ['20','LIN']
  conn.query(sql,sqlParams,function(err,result){
    if(err){ console.log("查询语句执行异常"); }
    res.send({error:0 ,message: 'success'});
  })
})

2. 测试运行 在浏览器中输入请求url地址:http://127.0.0.1:3000/update

 删

         通过请求url 删除数据库里的数据操作;将这一条数据 < sName:LIN ,sAge:20 > 删除;

1. 代码编写

/* 删除表数据操作 */
router.get('/del',function(req,res){
  const sql = "DELETE FROM sen WHERE sName = ? AND sAge = ?";
  const sqlParams = ['LIN','20'];
  conn.query(sql,sqlParams,function(err,result){
    if(err){ console.log("查询语句执行异常"); }
    res.send({error:0 ,message: 'success'});
  })
}) 

2. 测试代码 在浏览器中输入请求url地址:http://127.0.0.1:3000/del

         以上就是在Express框架中基本的来使用MySQL数据库连接与操作;


整合小用

下面来将前面的内容进行一个综合的整合使用:

        可以在这个sen表中了解到仅有两个字段<sName>和<sAge>,那么通过提供一个两个字段的数据进行管理;

// routes/index.js文件
var express = require('express');
const conn = require('../public/javascripts/conn_sql');
var router = express.Router();

/* GET home page. */
router.get('/', function(req, res, next) {
  res.render('index', { title: 'Express' });
});

// 从前端拿到的数据信息
let info = { sName:'HAN' , sAge:18 };

// 将info信息插入表数据中
router.get('/insert',function(req,res){
    // 插入表数据前前查询是否有该数据
    conn.query(`SELECT * FROM sen`,function(err,result){
    if(err){ console.log("查询执行异常;") }
    // 遍历info是否存在
    for(const i in result){
        if(result[i].sName == info.sName){
          res.send("已是会员用户");
          return;
        }
    }
    // 尚未存在执行添加
    conn.query(`INSERT INTO sen VALUES ('${info.sName}','${info.sAge}')`,function(err){
        if(err){console.log("添加执行异常;");return;}
        res.send('添加成功!');
    })
  })
})

module.exports = router;

        以上就是本篇的全部内容了,在express中引入mysql模块进行MySQL数据库的连接和操作且掌握操作数据库的一些基本使用命令,感谢大家的支持!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/168688.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

同济子豪兄带我学pytorch图像分类-task01(数据集准备)

学习准备&#xff1a; 本机配置环境的过程很繁琐&#xff0c;考虑时间的问题&#xff0c;直接租一个云服务器。 学习过程中代码没有出现任何问题&#xff0c;代码具有很高的时效性。竟然没有一个语法报错。 所有图片均来源于网络&#xff0c;若有侵犯&#xff0c;多有抱歉 …

Kubernetes 1.25.4版本安装

Kubernetes 1.25.4版本安装 1 配置 1.1 环境介绍 OS&#xff1a;CentOS Linux release 8.5.2111 机器: IPhostname10.104.10.201k8s-master10.104.10.202k8s-node110.104.10.203k8s-node2 所有机器&#xff0c;都将yum源改为国内阿里云开源镜像源 cd /etc/yum.repos.d/ m…

Rockchip开发系列 - 9.watchdog看门狗开发

By: fulinux E-mail: fulinux@sina.com Blog: https://blog.csdn.net/fulinus 喜欢的盆友欢迎点赞和订阅! 你的喜欢就是我写作的动力! 目录 dts中的watchdog节点watchdog驱动文件TRM watchdog:WDT框图功能描述计数器中断系统复位复位脉冲长度操作流程图寄存器描述寄存器设置…

【GD32F427开发板试用】点亮WS2812B炫彩灯环

本篇文章来自极术社区与兆易创新组织的GD32F427开发板评测活动&#xff0c;更多开发板试用活动请关注极术社区网站。作者&#xff1a;HonestQiao 我有一个WS2812B炫彩灯环&#xff0c;搭配精选的背景&#xff0c;非常出镜&#xff1a; 在玩过的板子上&#xff0c;我都要把它点亮…

算法之美~堆

如何理解“堆”堆是一种特殊的树&#xff0c;只要满足如下两点&#xff1a;堆是一个完全二叉树&#xff1b;堆中每个节点的值都必须>&#xff08;或<&#xff09;其子树中每个节点的值。大顶堆&#xff1a;每个节点的值都>子树中每个节点的值&#xff1b;小顶堆&#…

完美的Pornhub风格的Logo生成器,在线工具

pornhub是全球最大的Sex影片分享网站之一。于2007年成立于加拿大蒙特利尔&#xff0c;是属于大型的色情视频分享类网站&#xff0c;被视为是“Sex2.0”的先驱&#xff0c;在Alexa上排名第80位&#xff08;最高时曾跻身前30&#xff09;。 同样这个网站的logo风格也别具一格&am…

C 程序设计教程(17)—— 循环结构程序设计练习题

C 程序设计教程&#xff08;17&#xff09;—— 循环结构程序设计练习题 该专栏主要介绍 C 语言的基本语法&#xff0c;作为《程序设计语言》课程的课件与参考资料&#xff0c;用于《程序设计语言》课程的教学&#xff0c;供入门级用户阅读。 目录C 程序设计教程&#xff08;17…

3DMAX砖墙神器WallBuilder:快速生成常见砖墙插件教程

3DMAX一键快速生成砖墙插件&#xff08;3DMAX砖墙神器——快速常见砖墙&#xff09;WallBuilder&#xff0c;用来生成各种砖砌或石砌墙体、地面的插件。 【主要特性】 -偏移以将不同的墙放在一起&#xff1b; -可以按照样条曲线创建墙&#xff1b; -随机化砖块的随机函数&am…

【寒假每日一题】DAY.9 猜名次

目录 一、题目内容 二、思路 思路1 思路2 思路3 三、代码实现 一、题目内容 5位运动员参加了10米台跳水比赛&#xff0c;有人让他们预测比赛结果&#xff1a;A选手说&#xff1a;B第二&#xff0c;我第三&#xff1b;B选手说&#xff1a;我第二&#xff0c;E第四&#xff1b;…

COS插件入驻Discuz!x

Discuz!Discuz! 平台&#xff0c;由一群高擎互联网人在倾情支持&#xff0c; 他们来自于腾讯Discuz! 创业团队成员以及优秀的开发者。在中国互联网风云变迁中&#xff0c;Discuz! 20多年间为300万企业及站长赋能&#xff0c;秉承“开放、连接、共赢”的精神&#xff0c;倡导与生…

ZStack协议栈点对点通信

这里是zstack3.0安装包&#xff1a;链接&#xff1a;https://pan.baidu.com/s/1-N8FFQ86zenF1iq-wgkmJQ?pwd2023 提取码&#xff1a;2023 新建自己的zstack工程这篇写得详细&#xff1a;新建 这个点对点通信主要是终端节点向协调器发送命令D1,协调器收到命令后判断数据是否为…

聚焦技术与体验极致提升,阿里云视频云连续5年领跑!

全球领先的IT市场研究和咨询公司IDC发布 《中国视频云市场跟踪&#xff08;2022上半年&#xff09;》 阿里云连续五年稳居 中国视频云整体市场份额第一 整体市场份额占比达25.4% 近日&#xff0c;全球领先的IT市场研究和咨询公司IDC发布的《中国视频云市场跟踪&#xff08;…

算法训练营 day21 二叉树 二叉搜索树的最小绝对差 二叉搜索树中的众数 二叉树的最近公共祖先

算法训练营 day21 二叉树 二叉搜索树的最小绝对差 二叉搜索树中的众数 二叉树的最近公共祖先 二叉搜索树的最小绝对差 530. 二叉搜索树的最小绝对差 - 力扣&#xff08;LeetCode&#xff09; 给你一个二叉搜索树的根节点 root &#xff0c;返回 树中任意两不同节点值之间的最…

《啊哈算法》第四章之深度优先搜索

✌好听的歌一起分享&#xff01; 稻香 (女声版) - 余不不 - 单曲 - 网易云音乐 目录 模板 例子 1&#xff0c;关于遍历 2&#xff0c;关于边界 正文 1&#xff0c;概念 2&#xff0c;解救小哈 例子源码和题目 1&#xff0c;小学奥数 2&#xff0c;全排列 3&#x…

【自学Docker 】Docker inspect命令

Docker inspect命令 大纲 docker inspect教程 使用 docker inspect 命令可以用来获取 Docker容器 或者 Docker镜像 的元数据。该命令后面的 CONTAINER 可以是容器Id&#xff0c;或者是容器名。 docker inspect语法 haicoder(www.haicoder.net)# docker inspect [OPTIONS] N…

python小知识

一、pip config list -v#pip在哪里寻找pip.conf文件 阿里云镜像&#xff1a; 二、安装anaconda(阿里云镜像库) 1、安装完成&#xff0c;命令行输入&#xff1a;conda config生成.condarc文件&#xff08;运行期配置文件&#xff09; 2、如果原本的源中的源地址是 https&…

webService速通教学(送源码)

什么是WebService webService是一种古老的互联网通讯方法。通过http通讯&#xff0c;将数据封装成XML的形式在网络中传输。习惯Java开发的伙伴肯定会对其嗤之以鼻&#xff0c;为什么不用Json传输&#xff0c;为什么不直接通过url拼参数&#xff1f;最大的两个因素是&#xff1…

Nginx基础03:配置文件nginx.conf(Part2)

上一篇文章概述与罗列了"全局配置块、events配置块、http全局块"的基本配置与属性&#xff0c;本篇文章将继续深入server块的配置项&#xff0c;以及相关应用。上篇文章地址&#xff1a;Nginx基础02&#xff1a;配置文件nginx.conf&#xff08;Part1&#xff09;如何…

从“工业报国为己任”到“科技创造优质生活”——华阳集团三十周年记

2022年10月28日&#xff0c;ADAYO华阳集团(002906.SZ)发布了一份“亮眼”的三季报。2022年1-9月公司实现营业收入40.08亿元&#xff0c;同比增长28.03%&#xff0c;实现归母净利润2.67亿元&#xff0c;同比增长28.28%。其中第三季度营业收入、净利润绝对值均为上市以来单季度最…

Android 深入系统完全讲解(23)

OpenGL 和 OpenGLES 简介 OpenGL(Open Graphics Library)意为开放图形库&#xff0c;是一个跨平台的图形 API&#xff0c;用于指定 3D 图 形处理硬件中的软硬件编程接口。OpenGL 一般用于图形工作站&#xff0c;PC 端使用。由于性能和可 移植性等各方面原因&#xff0c;在移动端…