一、连接数据库配置文件
//连接数据库配置文件
const dbConfig = {
host: '127.0.0.1', //数据库地址
port: 3306, //数据库端口
user: 'root', //用户名
password: 'root', //数据库密码
database: 'testdb' //数据库名
};
export default dbConfig;
二、数据库查询封装文件
????????①? ?封装数据库查询(使用连接池)
数据库连接池是一种比较常见的数据库优化的方式,一个连接请求过来后,会创建新的数据库连接,SQL 语句执行完成后,创建的连接不会被销毁,而是放到了”连接池“中,等待后面的连接使用。节省了大量创建连接销毁连接的时间,也能降低服务器资源损耗,及时的释放连接也避免了出现数据库连接过多的情况。
import mysql from 'mysql'; //导入mysql模块
import dbConfig from '../config/db'; //导入数据连接配置
const pool = mysql.createPool(dbConfig); //创建数据库连接池
const query = (sql) => { //封装查询函数
return new Promise<any>((resolve, reject) => {
pool.getConnection((error, connection) => { //从连接池中取出连接
if (error) {
reject(error); //返回连接错误
} else { //连接成功则
connection.query(sql, (error, results) => {
if (error) { //查询错误返回
reject(error);
} else { //查询成功返回结果
resolve(results);
}
connection.release(); //执行完一次数据操作,将连接放回连接池
})
}
});
});
};
export default query;
//const pool = mysql.createPool(dbConfig); //创建数据库连接池
//pool.getConnection((error, connection) => {}) //从连接池中取出连接
//pool.end() //关闭连接池
//connection.destroy() //从连接池中移除某个连接
//connection.release(); //执行完一次数据操作,将连接放回连接池
????????②? ?不使用连接池
数据库每次建立连接对于服务器消耗是相对比较大的,此方法每次查询就建立一次连接,查询完成后断开,可以避免数据库连接超时的问题,,如果只是做测试的,或者个人网站,访问较少,很少使用查询,可以使用此方法,不用的时候会断开连接,不会占用服务器资源
import mysql from 'mysql'; //导入mysql模块
import dbConfig from '../config/db'; //导入数据连接配置
function myQuery(sql = '') {
return new Promise((resolve) => {
let connObj = mysql.createConnection(dbConfig) //创建数据库连接
connObj.query(sql, (err, result) => {
// console.log(err);
resolve({ err, result })
})
connObj.end() //查询完成,断开数据库连接
})
}
module.exports = myQuery
三、在需要使用的页面进行调用
//先导入
import query from '../models/query';
search(){
let sql = `xxxxxxxxxxxxxxxx`; //sql语句
let result = await query(sql); //执行查询量结果
}
|