mysql
前几天看了19年全球数据库流行度的榜单

mysql数据库因为免费的原因还是有很多小公司和个人使用,相信大部分前端朋友用php和mysql早已经滚瓜乱熟,这里我就不班门弄斧了,这次和大家分享下如何在nodejs下连接mysql
这里我们要介绍下同名中间件 mysql,
必要前提已安装过mysql数据库 ,可以去官网下载社区版,一般前端老铁用wamp也可以。
首先我们先安装 mysql 中间件 npm i mysql -S
话不多说直接看代码
var mysql = require('mysql');
// 连接数据库
var connection = mysql.createConnection({//配置信息 账号密码 数据库名称 端口号
host: 'localhost',
user: 'root',
password: '',
database: 'test',
port: '3306'
});
// 创建一个连接
connection.connect(function(err){
if(err){
console.log('[log]-:' + err);
return;
}else{
console.log('[connection connect] success!');
}
});
// 执行插入
//var userInsertSql = 'insert into user (username,password) values ("vane","123456")';
//推荐使用利用占位符模式进行操作,直接解决sql注入的安全性问题
var userInsertSql = 'insert into user (username,password) values (?,?)';//mysql语句 ? 为占位符
var params = ['chinavane','654321'];//对应上面占位符
connection.query(userInsertSql, params, function(err,results){
if(err){
console.log('insert err:' + err);
return;
}
console.log('insert success');
});
// 查询数据
// var userSelectSql = 'select * from user';//mysql 语句
// connection.query(userSelectSql,function(err,results){
// if(err){
// console.log('select err:' + err);
// return;
// }
// for (var i = 0; i < results.length; i++) {
// console.log(results[i].username);
// };
// });
// 关闭一个连接
connection.end(function(err){
if(err){
console.log(err.toString());
return;
}else{
console.log('[connection end] success!');
}
});
不难发现其实还是mysql语句 剩下的中间件已经都帮我们搞定了
但这样连接的方式是直连,我们自己调试的时候可以使用,但如果多人直连,性能总有枯竭的时候。
因而诞生了一个新的概念,连接池
原理:
首先创建多个连接,放到连接池(数组)中存起来;
当需要访问数据的时候,不用再创建连接,直接从连接池取出连接使用,进行数据库操作,操作结束释放掉资源放回连接池中;
连接池会自动管理池中的连接(当访问量少的时候,会自动减少一些连接,当访问量大的时候会自动增加一些连接);
这样达到资源最优的方式。
话不多说我们上代码
//--------------------自定义连接池模块 文件名datapool
var mysql=require("mysql");
var pool = mysql.createPool({//同样的配置信息
host: 'localhost',
user: 'root',
password: '',
database: 'test',
port: '3306'
});
var query=function(sql,callback){
pool.getConnection(function(err,conn){
if(err){
callback(err,null,null);
}else{
conn.query(sql,function(qerr,vals,fields){
//释放连接
conn.release();
//事件驱动回调
callback(qerr,vals,fields);
});
}
});
};
module.exports=query;//暴露接口
//使用自定义模块建立连接
var query=require('./datapool');
query("select * from users",function(err,vals,fields){
if(vals){
var valsLen = vals.length;
for (var i = 0; i < valsLen; i++) {//遍历
console.log(vals[i].username);
};
}
});
我们不难发现,如果多次连接,这种模式既能优化性能,又能减少代码 ,非常好
本文详细介绍了如何在Node.js环境中使用mysql中间件连接并操作MySQL数据库,包括直连方式和连接池的概念及实现,帮助开发者优化数据库访问性能。
373

被折叠的 条评论
为什么被折叠?



