MySql第三方数据库模块
- 安装:npm i mysql
createConnection连接数据库
每次查询都建立一个新的连接,造成资源浪费
-
mysql.createConnection(数据库信息对象):创建连接对象
-
connection.connect(回调函数【可选】):建立连接
-
connection.query(sql语句【增删改查】,回调函数):执行sql操作
-
connection.end(function(err)):关闭连接
-
connection.destroy():销毁连接
var mysql = require('mysql');//导入模块
var connection = mysql.createConnection({
host : 'locahost',//服务器
user : 'root',//数据库账号
password : '123456',//密码
port : '3306',//mysql端口
database : 'test',//数据库名字
});//创建连接对象
connection.connect(function(err){
if(err){
console.log('连接失败'+err)
}
});//建立连接
connection.query('SELECT * FROM table',function(err,results){
if(err) throw err;
console.log('成功返回的数据'+results);
});//查询数据库|删除一样
connection.end();//关闭连接
/*connection.query('INSERT INTO table(id,name) VALUES(0,?)',['占位符传入的名字'],function(err,results){
if(err) throw err;
console.log('插入成功返回的数据'+results);
});//插入|更新一样*/
createPool创建连接池
可以一次性创建多个数据库连接(数据库连接connection),缓存在连接池中,需要取出连接并重新利用
- myql.createPool(数据库信息对象):创建连接池
- pool.getConnection(function(err,connection)):从连接池中取出里连接,没有创建连接。connection跟createConnection创建的对象一样
- connection.release():释放连接(不用时归放连接池),connection为getConnection获取到的连接
- connection.destroy():移除连接(不在需要用到,从连接池中移除)
- pool.end():关闭连接池
var mysql = require('mysql')
var pool = mysql.createPool({
host: 'localhost',
port: 3306,
user: 'root',
password: '123456',
database: 'test'
});//创建一个pool连接池
pool.getConnection(function(err,connection){
if(err) throw err;
connection.query('SELECT *FROM table',function(err,results){
if(err) throw err;
console.log("查询成功"+results);
connection.relese();//释放当前连接到连接池等下次用
//connection.destroy()//不再使用销毁一个连接
});//获取到连接对象进行数据查询
});//获取一个数据库连接
//关闭一个连接池
pool.end()
- 封装
var mysql = require('mysql')
var pool = mysql.createPool({
host: 'localhost',
port: 3306,
user: 'root',
password: '123456',
database: 'test'
});//创建一个pool连接池
/**
*封装方法
* @params(String) sql - mysql语句
* @params(Array) params - 填充mysql占位符的参数队列
* @params(Function) callback - 数据回调函数
*/
var query = function(sql,params=null,callback){
pool.getConnection(function(err,connection){
if(err){
callback(err,null)
}else{
connection.query(sql,params,function(err,results){
callback(err,results)//结果回调
connection.release()//释放连接回连接池
})
}
})
}
modules.exports=query;//暴露一个方法
//另一个文件导入
query('mysql语句',参数对列,function(err,result){
})