JavaScript学习笔记(四十七)——Node.js操作MySQL

// 引入模块
var express = require("express");
var mysql = require("mysql");

// 快速搭建服务器
var app = express();

// 绑定端口
app.listen(3000, "127.0.0.1", () => {
    console.log("服务器已开启3000端口...");
})

// 创建连接
var db = mysql.createConnection({
    host: "localhost",
    user: "root",
    password: "123456",
    database: "nodemysql"
})
// 调用db.connect()方法
db.connect((err) => {
    if (err) throw err;
    console.log("数据库连接成功!");
})

// 创建数据库
// 在一个路由里写sql语句 使用db.query来执行sql语句 db.query()方法有两个参数 ,第一个参数是要执行的语句 第二个参数是个回调函数 回调函数里可以接收错误信息,也有执行后回来的信息 依然是错误优先
app.get("/createdb", (req, res) => {
    let sql = "CREATE DATABASE nodemysql";
    db.query(sql, (err, data) => {
        if(err){
            console.log(err);
        }else{
            console.log(data);
            res.setHeader("content-type", "text/plain;charset=utf-8");
            res.end("数据库创建成功!");
        }
    })
})

// 创建数据表
app.get("/createtable", (req, res) => {
    let sql = "CREATE TABLE user(id int AUTO_INCREMENT, username VARCHAR(255), password VARCHAR(20), PRIMARY KEY(ID))";
    db.query(sql, (err, data) => {
        if(err){
            console.log(err);
        }else{
            console.log(data);
            res.setHeader("content-type", "text/plain;charset=utf-8");
            res.end("数据表创建成功!");
        }
    })
})

// 插入数据
app.get("/insert",(req,res) => {
    let post = {username: "lisi", password: "123456789"};
    let sql = "INSERT INTO user SET ?";
    db.query(sql,post,(err,data) => {
        if(err){
            console.log(err);
        }else{
            console.log(data);
            res.setHeader("content-type", "text/plain;charset=utf-8");
            res.send("数据插入成功!");
        }
    })
})

// 查询数据
app.get("/select",(req,res) => {
    let sql = "SELECT * FROM user";
    db.query(sql,(err,data) => {
        if(err){
            console.log(err);
        }else{
            console.log(data);
            res.setHeader("content-type", "text/plain;charset=utf-8");
            console.log("查询成功");
            res.json(data);
        }
    })
})

// 查询单条数据,使用req.params.id接收传递的参数
app.get("/select/:id", (req, res) => {
    let sql = `SELECT * FROM user WHERE id = ${req.params.id}`;
    db.query(sql, (err, data) => {
        if(err){
            console.log(err);
        }else{
            console.log(data);
            res.setHeader("content-type", "text/plain;charset=utf-8");
            console.log("查询成功");
            res.json(data);
        }
    })
})

// 修改数据
// 更新的是某一条内容 所以还用传参数 需要注意的是 要更新的newUsername是字符串 所以写sql语句的时候需要使用单引号 引起来 ,如果是数值就不用了.
app.get("/update/:id", (req, res) => {
    let newUsername = "wanglaowu";
    let newPassword = "987654321";
    let sql =  `UPDATE user SET username = '${newUsername}' , password = '${newPassword}' WHERE id = ${req.params.id}`;
    db.query(sql, (err, data) => {
        if(err){
            console.log(err);
        }else{
            console.log(data);
            res.setHeader("content-type", "text/plain;charset=utf-8");
            res.send(`修改 ${req.params.id} 成功`);
            // res.json(data);
        }
    })
})

// 删除数据
app.get("/delete/:id", (req, res) => {
    let sql = `DELETE FROM user WHERE id = ${req.params.id}`;
    db.query(sql, (err, data) => {
        if(err){
            console.log(err);
        }else{
            console.log(data);
            res.setHeader("content-type", "text/plain;charset=utf-8");
            res.send(`删除 ${req.params.id} 成功`);
        }
    })
})
©️2020 CSDN 皮肤主题: 黑客帝国 设计师:上身试试 返回首页