Node链接MySQL数据库
配置
包:mysql
下载 npm i mysql -s
index.js中引入模块
const mysql = require('mysql')
//配置数据库
//创建连接池
const pool = mysql.createPool({
host:"localhost",
port:"3306",
user:"root",
password:"root",
database:"mydb",
dataStrings:true //日期时间转换为字符串
})
//获取链接对象
pool.connection(function(err,collection){
if(err){
return;
}
//执行语句 注意:需要查询的地方用 ? 代替 字符串的拼接 比如:
let sql = 'select * from teacher where name = ? and psw = ?'
//代替 let sql = 'select * from teacher where name = '+'admin'
//这样的原因是为了防止用户利用sql的漏洞,而?处放什么后面会讲到
collection.query(sql,[user,psw],function(err,data){
//解释参数的意思: 第一个 就是sql语句,第二个,就是问号里的值,第一个问号对应数组中第一个值,依次类推,第三个回调函数是当语句执行成功时传回的回调
if(err){
return;
}
console.log(data) //到这一步,已经成功的拿到了数据
})
})
//data中会存放类似的数据:
[
RowDataPacket {
'姓名': '张三',
'出生日期': '1996-07-11',
'任职': '助教',
'工资': 2600
}
]
封装
现在需要把专门处理sql的数据库操作封装到一个util中,我们叫他sqlUtils
在sqlUtils中 写刚刚的一些代码,不过将之前的sql,sqlArr,callback进行了暴露 并且将config暴露出去以便于改动
const mysql = require('mysql')
module.exports = {
config:{
host:"localhost",
port:"3306",
user:"root",
password:"admin",
database:"张宇弛",
dateStrings:true
},
sqlconnection(sql,sqlArr,callback){
const pool = mysql.createPool(this.config)
pool.getConnection((err,connection)=>{
if(err){
console.log(err)
return
}
connection.query(sql,sqlArr,callback)
})
}
}
现在在index中我们只需要对sqlUtils进行引用即可
const sqlUtils = require('./utils/sqlUtils')//最前面的包依赖加上这个
//在需要查询的地方做如下操作即可
sqlUtils.sqlconnection('select * from teacher where 任职 = ? and 工资 = ?',['教授',7500],function(err,data){
if(err){
console.log(err)
return;
}
console.log(data)
})