const mysql = require("mysql");
functionhandleError(){
getConn()
}functiongetConn(){var db = null;var pingInterval = null;var set = {
host:'localhost',
user = 'root',
password = 'root',
database = 'database',
multipleStatements: true
};
if(db !== null){
db.destroy();
db= null;
}
db=mysql.createConnection(set)
db.connect(function(err){if(err){
setTimeout(connect,2000)
}
});
db.on('error', handleError)//每个小时ping一次数据库,保持数据库连接状态
clearInterval(pingInterval);
pingInterval= setInterval(() =>{
console.log('ping...');
db.ping((err)=>{if(err) {
console.log('ping error: ' +JSON.stringify(err));
}
});
},3600000);returndb;
}/**
* @param {number} type 1是所有数据,2是获取只取一条,3是count(*)
**/
function execute(sql, type = 1){var promise = new Promise(function(resolve, reject){var db =getConn();
db.query(sql,function(err, result) {if(err){
console.log('[SELECT ERROR] - ', err.message);return}var resultStr =JSON.stringify(result);var json =JSON.parse(resultStr);if(type == 1){
resolve(json)
}else if(type == 2){
resolve(json[0])
}else if(type == 3){
resolve(json[0]['count(*)'])
}
});
db.end()
})
promise.then(function(value){returnvalue
},function(value){})returnpromise
}/**
* 批量执行sql
* @param {sql} sql sql语句
* @param {array} sql_param 要操作的数据(数组)*/
functionmany_execute(sql, sql_param){if (sql_param == ""){return}var db =getConn()
db.query(sql, [sql_param],function(err, result){if(err){
console.log('[SELECT ERROR] - ', err.message)return}//console.log(result);
returnresult;
})
db.end()
}/**
* 删除
* @param {str} table 表名
* @param {str} delSr where语句*/
functiondel(table, delSr){
execute("delete from "+ table +" where "+delSr)
}