- 为什么使用数据库连接池而不是用正常的连接?
- 我用过直接连接,但是会
出现断连
现象。 - 而数据库连接池就不会断连
- 我用过直接连接,但是会
- 代码
/**
* @Author kjprime
* @description 数据库模块
*/
const mysql = require('mysql');
/* mysql.escape() 此方法可以防止sql注入,可以顺带了解一下*/
const config_mysql = {
database: 'database',
host: '127.0.0.1',
port: '3306',
user: 'root',
password: 'root',
acquireTimeout: 1500, // 连接超时时间 可以不写
connectionLimit: 10, // 最大连接数 默认属性值为10. 可以不写
waitForConnections: true, // 超过最大连接时排队 可以不写
queueLimit: 0, // 排队最大数量(0 代表不做限制) 可以不写
// 用于指定允许挂起的最大连接数,如果挂起的连接数超过该数值,就会立即抛出一个错误,默认属性值为0.代表不允许被挂起的最大连接数。
}
const pool = mysql.createPool(config_mysql)
/**
* 对Mysql的封装
* @param {string} sql sql语句
* @returns promise对象
*/
const db = function(sql){
return new Promise(function(resolve, reject){
pool.getConnection(function(err, connection){
if(err){
console.info(err.message)
reject(err)
}
connection.query(sql, function(err, result){
// 当连接不需要使用且需要从连接池中移除的时候,我们可以使用destory方法,该方法使用如下所示:
// connection.destory();
connection.release() // 释放某个连接
if(err){
console.info(err.message)
reject(err)
}
console.log("数据库Promise对象生成成功")
resolve(result)
})
})
})
}
/**
* 获取数据
* @param {sql} sql sql语句
*/
async function obtainData(sql){
const data = await db(sql)
console.log(data)
}
obtainData('SHOW DATABASES;') // 数据库中有哪些表
友情链接: