node+express+mysql实现简单的数据增删改查

安装node mysql 就不说了,自己查一下资料,

1.安装express命令如下:

  1. $ npm install -g express-generator #需先安装express-generator  
  2.   
  3. $ npm install -g express  
  4.   
  5. $ express --version  #验证是否安装成功 
2.mysql数据库名称oa 表名 user

表结构 如下:


3.创建exprss项目

express -e myapp  新建一个以ejs为模板的express项目

cd myapp

npm install

4.安装nodejs的mysql插件

npm install mysql --save

5.创建数据库配置文件

项目根目录下创建config目录,config目录内新建db.js,来实现基本的数据库连接

db.js

var mysql = require("mysql");
var pool = mysql.createPool({
    host:"localhost",
    user:"root",
    password:"",
    database:"oa"
});

function query(sql,callback){
    pool.getConnection(function(err,connection){
        connection.query(sql, function (err,rows) {
            callback(err,rows);
            connection.release();
        });
    });
}

exports.query = query;


6.数据表增删改查的业务代码,demo中暂时放到routes下的user.js中(demo的项目目录结构可能不大合理,暂且不纠结于此)

user.js

复制代码
var express = require('express');
var router = express.Router();

var db = require("../config/db");

/**
 * 查询列表页
 */
router.get("/",function(req,res,next){
    db.query("select * from user",function(err,rows){
        if(err){
            res.render("users",{title:"用户列表",datas:[]});
        }else {
            res.render("users",{title:"用户列表",datas:rows});
        }
    });
});

/**
 * 添加用户
 */
router.get("/add",function(req,res,next){
    res.render("add");
});
router.post("/add",function(req,res,next){
    var name = req.body.name;
    var age = req.body.age;
    db.query("insert into user(name,age) values('"+name+"','"+ age +"')",function(err,rows){
        if(err){
            res.send("新增失败"+err);
        }else {
            res.redirect("/users");
        }
    });
});

/**
 * 删除用户
 */
router.get("/del/:id",function(req,res){
    var id = req.params.id;
    db.query("delete from user where id = " + id,function(err,rows){
        if(err){
            res.send("删除失败"+err);
        }else {
            res.redirect("/users");
        }
    });
});

/**
 * 修改
 */
router.get("/toUpdate/:id",function(req,res,next){
    var id = req.params.id;
    var sql = "select * from user where id = " + id;
    console.log(sql);
    db.query(sql,function(err,rows){
        if(err){
            res.send("修改页面跳转失败");
        }else {
            res.render("update",{datas:rows});
        }
    });
});

router.post("/update",function(req,res,next){
    var id = req.body.id;
    var name = req.body.name;
    var age = req.body.age;
    var sql = "update user set name = '"+ name +"',age = '"+ age +"' where id = " + id;
    console.log(sql);
    db.query(sql,function(err,rows){
        if(err){
            res.send("修改失败 " + err);
        }else {
            res.redirect("/users");
        }
    });
});


/**
 * 查询
 */
router.post("/search",function(req,res,next){
    var name = req.body.s_name;
    var age = req.body.s_age;
    var sql = "select * from user";
    if(name){
        sql += " where name = '"+ name +"'";
    }
    //if(age){
    //    sql += " and age = '" + age + "'";
    //}

    sql.replace("and","where");
    db.query(sql,function(err,rows){
        if(err){
            res.send("查询失败: "+err);
        }else{
            res.render("users",{title:"用户列表",datas:rows,s_name:name,s_age:age});
        }
    });
})

module.exports = router;
复制代码

7.创建ejs模版文件

users.ejs(用户列表页模板)

复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title><%= title %></title>
</head>
<body>
<form action="/users/search" method="post">
    姓名:<input type="text" name="s_name" value="<%= datas.name %>"><br>
    年龄:<input type="text" name="s_age" value="<%= datas.age %>"><br>
    <input type="submit" value="查询">
</form>
<table>
    <tr>
        <th>编号</th>
        <th>姓名</th>
        <th>年龄</th>
        <th>操作</th>
    </tr>
    <% for(var i = 0; i < datas.length; i++) {%>
        <tr>
            <td><%= datas[i].id %></td>
            <td><%= datas[i].age %></td>
            <td><%= datas[i].name %></td>
            <td><a href="/users/add">添加用户</a></td>
            <td><a href="/users/del/<%= datas[i].id %>">删除</a></td>
            <td><a href="/users/toUpdate/<%= datas[i].id %>">修改</a></td>
        </tr>
    <% } %>
</table>
</body>
</html>
复制代码

add.ejs(添加用户的模板文件)

复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>新增页面</title>
</head>
<body>
<form action="/users/add" method="post">
    姓名:<input type="text" name="name"><br>
    年龄:<input type="text" name="age"><br>
    <input type="submit" value="提交">
</form>
</body>
</html>
复制代码

update.ejs(用户信息修改的模板文件)

复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>修改页面</title>
</head>
<body>
<form action="/users/update" method="post">
    <input type="hidden" value="<%= datas[0].id %>" name="id">
    姓名:<input type="text" name="name" value="<%= datas[0].name %>"><br>
    年龄:<input type="text" name="age" value="<%= datas[0].age %>"><br>
    <input type="submit" value="提交">
</form>
</body>
</html>
复制代码

8.启动服务

npm start 启动服务

express默认的是3000的端口,如果服务正常启动,则可以在浏览器地址栏输入http://localhost:3000/users

9.运行图如下:









好的,下面是Node.jsMySQL实现增删改查接口的示例代码: ```javascript const express = require('express'); const mysql = require('mysql'); const bodyParser = require('body-parser'); const app = express(); // 配置body-parser中间件 app.use(bodyParser.urlencoded({ extended: false })); app.use(bodyParser.json()); // 创建数据库连接池 const pool = mysql.createPool({ host: 'localhost', user: 'root', password: 'password', database: 'test' }); // 查询数据接口 app.get('/api/select', (req, res) => { pool.getConnection((err, connection) => { if (err) { console.log(err); res.send({ code: 400, message: '数据库连接出错' }); } else { connection.query('SELECT * FROM users', (err, results) => { if (err) { console.log(err); res.send({ code: 400, message: '查询数据出错' }); } else { res.send({ code: 200, data: results }); } connection.release(); }); } }); }); // 新增数据接口 app.post('/api/insert', (req, res) => { pool.getConnection((err, connection) => { if (err) { console.log(err); res.send({ code: 400, message: '数据库连接出错' }); } else { const { name, age, gender } = req.body; connection.query('INSERT INTO users (name, age, gender) VALUES (?, ?, ?)', [name, age, gender], (err, results) => { if (err) { console.log(err); res.send({ code: 400, message: '新增数据出错' }); } else { res.send({ code: 200, message: '新增数据成功' }); } connection.release(); }); } }); }); // 修改数据接口 app.put('/api/update', (req, res) => { pool.getConnection((err, connection) => { if (err) { console.log(err); res.send({ code: 400, message: '数据库连接出错' }); } else { const { name, age, gender, id } = req.body; connection.query('UPDATE users SET name = ?, age = ?, gender = ? WHERE id = ?', [name, age, gender, id], (err, results) => { if (err) { console.log(err); res.send({ code: 400, message: '修改数据出错' }); } else { res.send({ code: 200, message: '修改数据成功' }); } connection.release(); }); } }); }); // 删除数据接口 app.delete('/api/delete', (req, res) => { pool.getConnection((err, connection) => { if (err) { console.log(err); res.send({ code: 400, message: '数据库连接出错' }); } else { const { id } = req.body; connection.query('DELETE FROM users WHERE id = ?', [id], (err, results) => { if (err) { console.log(err); res.send({ code: 400, message: '删除数据出错' }); } else { res.send({ code: 200, message: '删除数据成功' }); } connection.release(); }); } }); }); // 监听端口 app.listen(3000, () => { console.log('服务器已启动,端口:3000'); }); ``` 这里使用了`body-parser`中间件来解析POST请求的请求体,使用了MySQL的连接池来管理数据库连接,防止频繁创建和销毁连接导致的性能损失。在每个接口中,都先从连接池中获取一个连接,然后执行相应的SQL语句,并根据执行结果返回不同的响应。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

bysjlwdx

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值