Node 连接和操作 Mysql
配置 mysql 模块
安装 mysql2 模块
安装mysql然后引入以后会报错,因为现在安装的是8.0版本的mysql,新版加密方式不支持,所以这里采用安装引入mysql2
npm install mysql2
建立连接
const mysql = require('mysql2')
const db = mysql.createPool({
host: '127.0.0.1', //数据库的IP地址
user: '你的账号', //数据库账号
password: '你的密码', //数据库密码
database: 'test', // 指定要操作哪一个数据库
})
测试是否正常工作
db.query('select 1', (err, results) => {
if (err) return console.log(err.message)
console.log(results)
})
操作 mysql 数据库
1、查询数据
db.query('select * from users', (err, results) => {
if(err) return console.log(err.message);
console.log(res);
})
2、插入数据
// ? 表示占位符
// 向users表中新增数据,username = SpiderMan password = pcc123
const user = {username:'SpiderMan',password:'pcc123'}
// 定义待执行的sql语句
const sqlstr = 'insert into users (username,password) value (?,?)'
// 如果执行的是insert into 插入语句,则res是一个对象 ,可通过affectedRows属性来判断是否插入成功
// 使用数组的形式为占位符指定具体的值
db.query(sqlstr,[user.username,user.password],(err,res)=> {
if(err) return console.log(err.message);
if(res.affectedRows === 1) {
console.log('插入成功');
}
})
向表中新增数据时,如果数据对象的每个属性和数据表的字段一一对应,则可以通过如下方式快速插入数据:
const user = {username:'Bruce', password:'55550'}
const sql = 'insert into users set ?'
db.query(sql, user, (err, res) => {
if(err) return console.log(err.message);
if(res.affectedRows === 1) {
console.log('插入成功');
}
})
3、更新数据
const sql = 'update users set username=?, password=? where id=?'
db.query(sql, [username, password, id], (err, results) => {
...
})
快捷方式:
const user = {id:7,username:'Bruce',password:'55450'}
const sql = 'update users set ? where id=?'
db.query(sql, [user, user.id], (err, results) => {
if(err) return console.log(err.message);
if(res.affectedRows === 1) {
console.log('插入成功');
}
})
4、删除数据
const sql = 'delete from users where id=?'
db.query(sql, id, (err, results) => {
...
})
使用 delete 语句会真正删除数据,保险起见,使用标记删除的形式,模拟删除的动作。
即在表中设置状态字段,标记当前的数据是否被删除。
db.query('update users set status=1 where id=?', 4, (err, res) => {
if(err) return console.log(err.message);
if(res.affectedRows === 1) {
console.log('标记删除成功');
}
})