当前位置:网站首页>【Express连接MySQL数据库】
【Express连接MySQL数据库】
2022-07-29 04:23:00 【꒰ঌsnail໒꒱】
1、安装MySQL模块
npm install mysql
2、创建一个配置文件
创建一个配置文件:用于连接MySQL数据库
3、增,删,改,查操作
大致流程如下:
(1)在前端页面中使用表单来收集数据
(2)通过jQuery的方法向服务器发起异步请求,将数据提交给服务器
(3)服务器接收到前端的请求数据后,将数据写入数据库,同时给前端发送响应信息
dbconfig.js配置文件代码如下:
var dbconfig = {
host:'localhost',
port:3306,
user:'root',
password:'123456',
database:'xy' //所连接的数据库名
}
module.exports =dbconfig;
app.js后端代码:
var crudRouter =require('./routes/crud')
app.use('/crud',crudRouter);
(1)查询操作
crud.js数据库路由代码如下:
var express =require('express')
var mysql = require('mysql')//导模块
var dbconfig = require('../config/dbconfig')//导入自定义模块
var router = express.Router()
//http://localhost:3000/crud/findAll
router.get('/findAll',(req, res) => {
//1、连接数据库,获取数据库的连接对象
let conn = mysql.createConnection(dbconfig);
console.log(conn)
//2、调用数据库连接对象的query方法执行查询
conn.query('select * from stu',function(err,results,fields){
if(err){
throw err
}
console.log(results)//输出查询结果
res.send(results)
})
//3、关闭数据库的连接
conn.end((err)=>{
if(err){
console.log(err)
return
}
})
})
module.exports =router;
运行结果如下:
在postman软件测试如下:
(2)增加操作
️前端页面代码如下(因为要用JQuery,所以要导入JQuery库):
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<div>
<form id="reg">
<label>
学号:<input type="text" name="s_id">
</label>
<br><br>
<label>
姓名:<input type="text" name="s_name">
</label>
<br><br>
<label>
年龄:<input type="number" name="s_age">
</label>
<br><br>
<label>
性别:<input type="text" name="s_gender">
</label>
<br><br>
<button type="button" id="btn_ok">提交</button>
<button type="button" id="btn_update">修改</button>
</form>
<br><br>
<span id="msg"></span>
<br><br>
<label>
删除的学号:<input type="text" id="sid">
<button type="button" id="btn_del"> 删除</button>
</label>
</div>
</body>
</html>
Ajax异步请求代码:
<script src="../js/jquery-3.4.1.js"></script>
<script>
$(function(){
$('#btn_ok').bind('click',function(){
$.ajax(
{
url:'http://localhost:3000/crud/add',
type:'post',
dataType:'json',
data:$('#reg').serialize(),//表单序列化
success:function(result){
//result,是一个json对象
$('#msg').html(result.info)
},
error:function(err){
console.log(err)
}
})
})
})
</script>
服务器后端代码crud.js:
var express =require('express')
var mysql = require('mysql')//导模块
var dbconfig = require('../config/dbconfig')//导入自定义模块
var router = express.Router()
//http://localhost:3000/crud/add
router.post('/add',(req, res) => {
//1、就是客户端的请求数据
let sid =req.body.s_id
let sname =req.body.s_name
let age =req.body.s_age
let gender=req.body.s_gender
//2、将数据封装成对象
let data ={
sid,sname,age,gender}
//3、创建数据库的连接对象
let conn = mysql.createConnection(dbconfig);
//4、将数据插入到数据库中
conn.query('insert into stu set ?',data,function(err,result){
if(err){
res.send({
code:1001,
info:'数据插入失败'
})
}else{
res.send({
code:1002,
info:'数据插入成功'
})
}
})
//5、关闭数据库连接
conn.end((err)=>{
if(err){
console.log(err)
return
}
})
})
module.exports =router;
运行结果如下:
在postman软件测试如下:
(3)删除操作
Ajax异步请求代码:
<script src="../js/jquery-3.4.1.js"></script>
<script>
$(function(){
$('#btn_del').bind('click',function(){
$.ajax({
url:'http://localhost:3000/crud/remove',
type:'delete',
dataType:'json',
data:{
s_id:$('#sid').val()},
success:function(result){
$('#msg').html(result.info)
},
error:function(err){
console.log(err)
}
})
})
})
</script>
服务器后端代码crud.js:(其余同上,此为关键代码)
//http://localhost:3000/crud/remove
router.delete('/remove',(req, res) => {
//1、获取客户端的请求数据
let sid = req.body.s_id
//2、获取数据库的连接
let conn = mysql.createConnection(dbconfig);
//3、执行删除
conn.query('delete from stu where sid=?',sid,function(err,result){
if(err){
console.log(err)
res.send({
code:1001,
info:'删除失败'
})
}else{
res.send({
code:1002,
info:'数据删除成功'
})
}
})
conn.end((err)=>{
if(err) {
console.log(err)
return
}
})
})
运行结果如下:
(4)修改操作
Ajax异步请求代码:
$('#btn_update').bind('click',function(){
$.ajax(
{
url:'http://localhost:3000/crud/modify',
type:'put',
dataType:'json',
data:$('#reg').serialize(),//表单序列化
success:function(result){
$('#msg').html(result.info)
},
error:function(err){
console.log(err)
}
})
})
服务器后端代码crud.js:(其余同上,此为关键代码)
//http://localhost:3000/crud/modify
router.put('/modify',(req, res) => {
//1、就是客户端的请求数据
let sid =req.body.s_id
let sname =req.body.s_name
let age =req.body.s_age
let gender=req.body.s_gender
//2、创建数据库的连接对象
let conn = mysql.createConnection(dbconfig);
//3、将数据插入到数据库中
conn.query('update stu set sname=?,age=?,gender=? where sid=?',[sname,age,gender,sid],function(err,result){
if(err){
console.log(err)
res.send({
code:1001,
info:'数据更新失败'
})
}else{
res.send({
code:1002,
info:'数据更新成功'
})
}
})
//5、关闭数据库连接
conn.end((err)=>{
if(err){
console.log(err)
return
}
})
})
数据库xy的stu表部分内容如下:我们要修改S_1001 liuYi 35 male这条信息:
查看表,数据修改成功:
边栏推荐
- visio画网格
- C language: typedef knowledge points summary
- es6和commonjs对导入导出的值修改是否影响原模块
- "Weilai Cup" 2022 Niuke summer multi school training camp 2H
- C语言:typedef知识点总结
- 对一个元素使用多种变形的方法
- C语言:枚举知识点总结
- MySQL - 聚簇索引和辅助索引
- Sequence list and linked list
- [material delivery UAV] record (ROS + Px4 + yolov5 + esp8266 + steering gear)
猜你喜欢
post导出数据,返回
12.优先级队列和惰性队列
Fu Yingna: Yuan universe is the new generation of Internet!
论pyscript使用感想(实现office预览)
RMAN do not mark expired backups
Won't you just stick to 62 days? Sum of words
Code or script to speed up the video playback of video websites
MySQL gets the maximum value record by field grouping
C语言力扣第61题之旋转链表。双端队列与构造循环链表
Not 67 days, square root
随机推荐
Pytoch distributed training
kotlin的List,Map,Set等集合类不指定类型
openFeign异步调用问题
Beginner: array & String
Cad2020 introductory learning (2021.4.13)
C language: enumerating knowledge points summary
Shell string segmentation
9. Delay queue
Use of torch.optim optimizer in pytorch
Realize the effect of univariate quadratic equation through JS. Enter the coefficients of a, B and C to calculate the values of X1 and x2
Fu Yingna: Yuan universe is the new generation of Internet!
Deploy Jenkins using containers
不会就坚持63天吧 最大的异或
[k210 stepping pit] pytorch model is converted to kmodel and used on dock. (ultimately not achieved)
你真的会写Restful API吗?
It won't last for 65 days. It only appears once
一个公司的面试笔记
Not for 58 days. Implement prefix tree
SVG--loading动画
Not for 61 days. The shortest word code