MySQL node 学生端增删改查

4 篇文章 0 订阅
3 篇文章 0 订阅

node 学生端增删改查(数据来源json.js) :https://blog.csdn.net/stayreal_OA/article/details/100728606

此版本为以上链接版本的升级版(数据来源 MySQL数据库)

views文件夹中html文件不变

常规配置db.js

//导入mysql驱动
const mysql = require("mysql");

//导出方法
//参数1:sql文 字符串
//参数2:?对应得参数[] {}
//参数3:回调函数
exports.base=function(sql,params,callback){
    //创建连接对象
    const connection = mysql.createConnection({
        host:"localhost",
        database:"web84",
        user:"root",
        password:"123456"
    });

    //服务器连接数据库
    connection.connect();

    //才能在服务器访问数据库操作数据库表

    //操作数据库
    //查询操作
    //参数1:执行的sql文
    //参数2:sql文中所需要的参数 [xxx,xxx],{xxxx:xxxx,xxx:xxx}
    //参数3,执行sql后,自动调用回调函数  function (error, results, fields){。。。。。}
    connection.query(sql,params,function(error,results,fields){
        if(error) throw error;
        //成功获取查询的结果
        callback(results);
    });
    //关闭连接
    connection.end();

}

配置index.js

导入模块,创建路由

//导入express模块
const express = require("express");
//创建http服务对象
const app = express();

//导入path的系统模块
const path = require("path");
//导入body-Parser的第三方中间件
const bodyParser = require("body-parser");

//导入studentRouter.js模块
const studentRouter = require("./studentRouter.js");

//导入art-template模板引擎
//设置模板引擎文件后缀,在express框架中整合art-template模板引擎
app.engine("html",require("express-art-template"));
//设置模板引擎目录
app.set("views","./views/");
//设置视图引擎
app.set("view engine","html");


//解析请求参数的类型是application/x-wwww-urlencoded  默认为该类型   
//body-parser专门处理请求正文(请求体))中的内容  把解析好的数据设置到请求对象中body属性中。
app.use(bodyParser.urlencoded({extended:true}));
//解析请求参数的类型是application/json
app.use(bodyParser.json());

//根据客户端的资源名称 挂载到studentRouter对象上
 app.use("/student",studentRouter);
 
//获取项目目录
let proname=path.dirname(__dirname); 
//静态资源的设置
app.use("/static",express.static("./views/"));
app.use("/js",express.static(path.join(proname,"js")));
app.use("/css",express.static(path.join(proname,"css")));
app.use("/img",express.static(path.join(proname,"img")));

//添加监听
app.listen("8080",function(){
    console.log("running...");
})

studentRouter.js

//导入express模块
const express = require("express");

//创建Router对象
const router = express.Router();

//导入datas.json模块
const datas = require("./json/datas.json");

//导入模块fs
const fs = require("fs");

//导入path的系统模块
const path = require("path");

//导入db.js模块 
const mysql = require("./db.js");


//查询功能  http://localhost:8080/student/query   http://localhost:8080/student/
router.get(["/query","/"], function (req, resp) {
    //查询sql文
    //执行查询操作
    let querySql = "select * from student";
    let params = [];
    mysql.base(querySql,params,function(results){
        console.dir(results);
        let obj = {};
        obj.studentlist = results;
        obj.num = results.length;
        //resp.render(模块名称,{list:xxxx,num:xxxx});  第二个参数必须是对象{}
        //后台渲染  把最终完整的页面响应给客户端。
        resp.render("studentlist.html", obj);
    })
})


//新增保存功能
router.post("/add", function (req, resp) {
    let succ = false;
    //取得请求体中的参数
    //{表单的name属性值:在页面上输入的值}
    //{sno:xxx,sname:xxxx,age:xxx,sex:"男"}
    var params = req.body;
    //check 学号不能重复
    let checksql = "select * from student where sno=?";
    let param = [params.sno];
    mysql.base(checksql,param,function(results){
        //console.log(results);
        if(results.length>0){
            resp.send("该学号已经存在不能新增");
        }else{
            //新增数据
            //let insertsql = "insert into student values(?,?,?,?)";
            //param= [params.sno,params.sname,params.age,params.sex];
            let insertsql = "insert into student set ?";
            //mysql.base(insertsql,param,function(re){
            mysql.base(insertsql,params,function(re){
                console.log(re);
                if(re.affectedRows==1){
                    //重定向
                    resp.redirect("http://localhost:8080/student/query");
                }else{
                    resp.send("新增失败!");
                }
            });
            
        }
    })
})

//跳转到修改页面
router.get("/toUpdate", function (req, resp) {
    let succ = false;
    //取得get提交的请求参数   获取的是你要修改学生的学号
    let params = req.query; //{sno:s001,sname:xxx}
    let sno = params.sno;
    //点击修改时,把你要修改的学生学号传过来,根据学号查询学生表,
    //  有 把学生对象取出来渲染到模板页面上  没数据报错
    let sql = "select * from student where sno=?";
    mysql.base(sql,[sno],function(results){
        if(results.length>0){
            //把学生对象的数据渲染到修改页面上  {sno:xxx,sname:xxx...}
            resp.render("updatestudent.html", results[0]);
        }else{
            resp.send("该学生不存在,不能修改"); 
        }
    });
})

//修改功能
router.post("/update", function (req, resp) {
    let succ = false;
    //获取请求参数  {sno:xxx,sname:xxxx,age:xxx,sex:"男"}
    let params = req.body;

    //判断你要修改的学生数据在sql中是否存在,存在的话,就可以修改了  反之报错
    let sql = "select * from student where sno=?";
    mysql.base(sql,[params.sno],function(results){
        if(results.length>0){
            //修改学生数据
            sql ="update student set sname=?,age=?,sex=? where sno=?";
            let param = [params.sname,params.age,params.sex,params.sno];
            mysql.base(sql,param,function(re){
                if(re.affectedRows==1){
                    //重定向
                    resp.redirect("http://localhost:8080/student/query");
                }else{
                    resp.send("修改失败");
                }
            })
        }else{
            resp.send("该学生不存在,不能修改"); 
        }
    });

});

//删除功能
router.get("/delete",function(req,resp){
    //取得你要删除的学号
    var sno = req.query.sno;
    //根据学号查询要删除的学生数据是否存在  存在 就删除,不存在就报错
    let sql = "select * from student where sno=?";
    mysql.base(sql,[sno],function(results){
        if(results.length>0){
            //删除该学生
            sql = "delete from student where sno=?";
            mysql.base(sql,[sno],function(re){
                if(re.affectedRows==1){
                    //重定向
                    resp.redirect("http://localhost:8080/student/query");
                }else{
                    resp.send("删除失败");
                }
            })
        }else{
            resp.send("该学生不存在,不能删除"); 
        }
    });
});

//导出
module.exports = router;

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值