使用Node.js连接mysql数据库 执行查、删

151 阅读2分钟

1.安装npm第三方模块

   npm i express
   npm i mysql2
   npm i ejs
   npm i fs

2.连接数据库

const express = require('express');
const fs = require('fs')
const mysql = require('mysql2')
const ejs = require('ejs')

const app = express()
app.use(express.urlencoded({extended:false}))

const client = mysql.createConnection({
    host: 'localhost',
    user: 'root',
    password:'123456',
    port: 3306,
    database:'my_sql'
})

client.connect((err)=>{
    if(err){console.log(err); return}
    console.log('连接到服务器');
})


app.listen(80,()=>{
    console.log('启动服务:http://127.0.0.1/psAll');
})

首先这里引用mysql模块 使用mysql.createConnection创建一个对象,提供连接数据库的信息, 然后,在引用fs模块执行文件的读写,再引用ejs模块执行对数据库内容的读写,使用client.connect进行一个服务器的反馈,最后监听服务器使用80端口,在总端上运行。

3.查询数据库

app.get('/psAll',(req,res)=>{
    fs.readFile('1.html', 'utf8', (err,data)=>{
        client.query('select * from person',(error,results)=>{
            let d = ejs.render(data,{data:results})
            res.send(d)
        })
    })
})

这里我使用的编译器是vscode,查询数据库使用到的是在文件中新建一个1.html,打出数据库的样式,然后在用node.js连接,在网页上输出他查询的结果

这里mysql数据库我使用的是SQlyog编译器

CREATE TABLE person (
id INT PRIMARY KEY AUTO_INCREMENT COMMENT '人员编号',
NAME VARCHAR(50) NOT NULL COMMENT '姓名',
sex VARCHAR(50) NOT NULL COMMENT '性别',
age INT NOT NULL COMMENT '年龄',
rank VARCHAR(50) NOT NULL COMMENT '等级',
department VARCHAR(100) NOT NULL COMMENT '所在部门'
) COMMENT '人员信息表'

INSERT INTO person(id,NAME,sex,age,rank,department)
VALUES(1,'张三','男',25,'5级','开发部'),
(2,'李四','男',20,'3级','编程部'),
(3,'胡大','男',20,'3级','编程部')
<!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>
    <table border="1px solid black">
        <tr>
            <td>人员编号</td>
            <td>姓名</td>
            <td>性别</td>
            <td>年龄</td>
            <td>等级</td>
            <td>所在部门</td>
            <td>操作</td>
        </tr>
        <tr>
            <%data.forEach(function(item,index){%>
            <td><%=item.id%></td>
            <td><%=item.name%></td>
            <td><%=item.sex%></td>
            <td><%=item.age%></td>
            <td><%=item.rank%></td>
            <td><%=item.department%></td>
            <td><a href="/dlps<%=item.id%>">删除</a></td>
        </tr>
        <%})%>
    </table>
</body>

</html>

这里使用

<%data.forEach(function(item,index){%><%})%>

字段 遍历下标 id对应数据库的id name 对应数据库的name 等等 删除方法是使用a标签的href属性连接到node.js根据id字段来删除字段

4.删除数据库字段

app.get('/dlps:id',(req,res)=>{
    client.query('delete from person where id =?',[req.params.id],()=>{
        res.redirect('/psAll')
    })
})

使用client.query执行sql语句,用id来判断然后执行删除

5.执行的效果图

1.png