node连接mysql
安装依赖包
npm i express mysql body-parser -D
index.js
const express = require('express');
const mysql = require('mysql');
const bodyParser = require('body-parser');
//解析 request 中 body的 urlencoded字符, 只支持utf-8的编码的字符,也支持自动的解析gzip和 zlib。返回的对象是一个键值对,当extended 为false时,键值对中的值就为'String'或'Array'类型,为true时,可以是任意类型。
app.use(bodyParser.urlencoded({extended:true}));
app.use(bodyParser.json());
//数据库连接配置
const db = mysql.createConnection({
host: 'localhost', //主机
user: '', //数据库用户名
password: '', //数据库密码
database: '' //选择数据库
});
//处理跨域
app.all("*",function(req,res,next){
//设置允许跨域的域名,*代表允许任意域名跨域
res.header("Access-Control-Allow-Origin","*");
//允许的header类型
res.header("Access-Control-Allow-Headers","content-type");
//跨域允许的请求方式
res.header("Access-Control-Allow-Methods","DELETE,PUT,POST,GET,OPTIONS");
if (req.method.toLowerCase() == 'options')
res.send(200); //让options尝试请求快速结束
else
next();
})
// 添加数据
app.post('/add', (req, res) => {
let post = req.body;
let sql = `INSERT INTO stu SET ?`; //stu为表名
db.query(sql, post, (err, result) => { //执行sql语句,插入到数据表中
if (err) throw err;
});
});
//删除数据
app.post('/delete', (req, res) => {
let item = req.body;
let sql = `DELETE FROM stu WHERE cno = ${item.cno}`;//删除条件为cno = item.cno
db.query(sql, (err, result) => {
if (err) throw err;
let SQL= 'SELECT * FROM stu';
db.query(SQL, (err, result) => {
if (err) throw err;
res.json(result);//返回数据给前端
});
});
});
// 查询数据
app.get('/select', (req, res) => {
let sql = 'SELECT * FROM stu';
db.query(sql, (err, result) => {
if (err) throw err;
res.json(result);
});
});
//修改数据
app.post('/update', (req, res) => {
let item = req.body;
let sql = `UPDATE stu SET cxfs = '${item.cxfs}',czxt = '${item.czxt}' ,rjsx = '${item.rjsx}',Web = '${item.Web}' ,UI = '${item.UI}',mzd = '${item.mzd}',yjcs = '${item.yjcs}'
WHERE cno = ${
item.cno
}`;
//通过cno = item.cno搜索到要修改的数据,然后重新赋值,cxfs,czxt等为数据表字段名
db.query(sql, (err, result) => {//执行sql语句
let hu= 'SELECT * FROM stu';
db.query(hu, (err, result) => {
if (err) throw err;
res.json(result);
});
});
});
app.listen(5000)//监听端口
html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js"></script>
</head>
<body>
<button>获取全部的数据</button>
<button>添加数据</button>
<button>删除数据</button>
<button>修改数据</button>
<script>
//获取全部的数据
$('button').eq(0).click(function(){
$.ajax({
type: 'get',
url: 'http:localhost:5000/select',
success: function(data){
console.log(data);
},
error: function () {
console.log('error');
}
});
})
//添加数据
$('button').eq(1).click(function(){
$.ajax({
data: {
cno:123,
age:686,
name:'ca'
},
url: 'http:localhost:5000/add',
type:'post',
success: function(data){
console.log(data);
},
error: function () {
console.log('error');
}
});
})
//删除数据
$('button').eq(2).click(function(){
$.ajax({
data: {
cno:123,//删除数据时,通过唯一的id去匹配要删除的数据,cno
},
url: 'http:localhost:5000/delete',
type:'post',
success: function(data){
console.log(data);
},
error: function () {
console.log('error');
}
});
})
//修改数据
$('button').eq(3).click(function(){
$.ajax({
data: {
cno:123,//通过唯一的id找到需要修改的数据
age:686,//修改age的值
name:'hu',//修改name的值
},
url: 'http:localhost:5000/delete',
type:'post',
success: function(data){
console.log(data);
},
error: function () {
console.log('error');
}
});
})
</script>
</body>
</html>