node连接数据库mysql

时间:2021-10-10 02:54:06

连接数据库有两种连接方式,一是:直接连接,每次连接都试创建一个新的连接,二是:使用连接池
在这里就不介绍第一种方式了,直接使用第二种方式

在上一节的基础上增加配置文件baseConfig.js

/**
* Created by jinwei on 2017/7/31.
*/


var dataSource={
'dbhost':'localhost',
'port':'3306',
'user':'root',
'password':'Pass299522',
'db':'test',
'charset':'utf8',
'maxConnectLimt':10
}

module.exports = dataSource;

创建数据库公共文件mysql.js

/**
* 创建数据库连接
*/

var baseConfig = require("./config/baseConfig");
var mysql = require('mysql')
var pool = mysql.createPool({
'host': baseConfig.dbhost,
'port': baseConfig.port,
'user': baseConfig.user,
'password': baseConfig.password,
'database': baseConfig.db,
'charset': baseConfig.charset,
'connectionLimit': baseConfig.maxConnectLimt,
'supportBigNumbers': true,
'bigNumberStrings': true
})
//释放连接
var release=function(connection){
connection.release(function(error){
if(error){
console.log('释放数据库连接失败')
}else{
console.log('释放数据库连接成功')
}
})
}

//数据库执行sql
var execSql = function(sql,args,handler){
//获取查询参数
this.execQuery=function(){
pool.getConnection(function(error,connection){
if(error){
console.log("数据库连接异常!")
throw error;
}
//执行查询
if(!args){
var query = connection.query(sql,function(error , result){
if(error){
console.log('数据库查询操作异常:sql='+sql)
throw error;
}
handler(error ,result);
console.log("执行sql:"+query.sql)
})

}else{
var query = connection.query(sql,args,function(error ,result){
if(error){
console.log('数据库查询操作异常:sql='+sql)
throw error;
}
handler(error,result)
})
console.log("执行sql:"+query.sql)
}
console.log('释放连接')
connection.release()
})

}
}

module.exports=execSql

在要调用的模块引入mysql.js

users.js

var express = require('express');
var router = express.Router();
var execSql = require('../mysql')


/* GET users listing. */
router.get('/', function(req, res, next) {
res.send('respond with a resource');
});
router.get('/getList',function(req ,res ,next){
res.send('test user getList')
});
router.get('/testMysql',function(req ,res ,next){
var sql ='SELECT * FROM users';
var query = new execSql(sql,null,function(error,result){
if(error){
console.log("查询失败:"+error)
throw error;
}
console.log("查询数据:"+JSON.stringify(result))
res.send(result);
})
query.execQuery();
});
router.get('/addUser',function(req ,res ,next){
var sql ='INSERT INTO users(id,username,age,sex) VALUES(?,?,?,?)';
var args=['5','adduse',36,'2'];
var query = new execSql(sql,args,function(error,result){
if(error){
console.log("插入失败:"+error)
throw error;
}
console.log("插入数据:"+JSON.stringify(result))
res.send(result);
})
query.execQuery();
});

module.exports = router;

访问即可
node连接数据库mysql