开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第1天,点击查看活动详情
1. 连接数据库
- 前端页面
<h2>添加员工</h2>
<form method="post" action="/add">
姓名:<input type="text" name="ename"><br>
性别:<input type="text" name="sex"><br>
生日:<input type="text" name="birthday"><br>
工资:<input type="text" name="salary"><br>
部门:<input type="text" name="deptId"><br>
<input type="submit">
</form>
- 后端代码
const express = require('express')
// 创建 web 服务器
const app = express()
// 设置端口
app.listen(8080)
// 托管静态资源到 public 目录
app.use(express.static('./public'))
// 使用中间键将 post 请求的数据解析为对象
app.use(express.urlencoded({
extended: false
}))
// 添加路由(post / add)
app.post('/add', (req, res) => {
// 获取 post 传递的数据
console.log(req.body);
res.send('员工添加成功')
})
- 启动
node app.js,运行之后在cmd面板即可看到返回的 object 对象格式的数据
2. 查看数据库的数据
- 新建一个以
.js为后缀的文件
// 引入 Mysql 模块
const mysql = require('mysql')
// 创建连接池对象
const db = mysql.createConnection({
host: '192.168.xx.xx',
user: 'root',
password: 'xxx',
database: 'db_library',
connectionLimit: 15, // 连接池的大小,默认也是15
})
// 执行 sql 命令, 自动建立连接
// 方法是异步的, 需要使用回调函数获取结果
db.query('select * from tb_reader', (err, result) => {
// err: 可能产生的错误结果
if (err) return console.log('连接失败,请重试')
// result:成功的结果
console.log(result)
});
- 在
xxx.js的文件下, 通过Node xxx.js运行该文件; 以下是运行得到的数据,仅供参考。
E:\h5-001\node.js\danei>node 02_mysql.js
[
RowDataPacket {
reader_id: 1,
reader_name: '张琳',
age: 19,
stu_no: 10001,
account: 200
},
RowDataPacket {
reader_id: 2,
reader_name: '实时',
age: 90,
stu_no: 1006,
account: 200
},
RowDataPacket {
reader_id: 3,
reader_name: '王五',
age: 21,
stu_no: 10003,
account: 100
},
RowDataPacket {
reader_id: 4,
reader_name: '刘文',
age: 24,
stu_no: 1004,
account: 300
},
RowDataPacket {
reader_id: 5,
reader_name: '张胜',
age: 25,
stu_no: 1005,
account: 455
}
]
3. 查询数据表 姓名 当中出现 '五' 的这个人
- 练习:执行 SQL 命令, 查询出该员工的数据
// 得到了员工的姓名 -- 方法一(字符串拼接)
var user = '%五'
// 执行 sql 命令, 查询出该员工的数据
SELECT * FROM tb_reader WHERE reader_name like "%五"
db.query('SELECT * FROM tb_reader WHERE reader_name like' + '"' + user + '"', (err, result) => {
if (err) throw Error
console.log(result)
})
- 查询结果
E:\h5-001\node.js\danei>node 02_mysql.js
[
RowDataPacket {
reader_id: 3,
reader_name: '王五',
age: 21,
stu_no: 10003,
account: 100
}
]
// 得到了员工的姓名 -- 方法二(模板字符串)
var user = '%五'
// 执行 sql 命令, 查询出该员工的数据
db.query(`SELECT * FROM tb_reader WHERE reader_name like "${user}"`, (err, result) => {
if (err) throw Error
console.log(result)
})
- 查询结果
E:\h5-001\node.js\danei>node 02_mysql.js
[
RowDataPacket {
reader_id: 3,
reader_name: '王五',
age: 21,
stu_no: 10003,
account: 100
}
]
// 得到了员工的姓名 -- 方法三(占位符)
// ? 是用来占位符,[user] 表示需要用来过滤的数据
var user = '%五'
db.query('select * from tb_reader WHERE reader_name like ?', [user], (err, result) => {
if (err) throw Error
console.log(result)
})
- 查询结果
E:\h5-001\node.js\danei>node 02_mysql.js
[
RowDataPacket {
reader_id: 3,
reader_name: '王五',
age: 21,
stu_no: 10003,
account: 100
}
]
4. 往数据表当中添加数据
- 注意:设置
id为自增
// 添加数据
var user = {
reader_name: '舒服',
age: '70',
stu_no: '1009',
account: '700'
}
db.query('INSERT INTO tb_reader set ?', [user], (err, result) => {
if (err) throw Error
console.log(result)
})
- 查询结果
PS E:\h5-001\node.js\danei> node .\02_mysql.js
OkPacket {
fieldCount: 0,
affectedRows: 1,
insertId: 11,
serverStatus: 2,
warningCount: 0,
message: '',
protocol41: true,
changedRows: 0
}