博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
深入解析Node.js使用MySQL连接池
阅读量:6241 次
发布时间:2019-06-22

本文共 3416 字,大约阅读时间需要 11 分钟。

这篇文章主要介绍了Node.js使用MySQL连接池的方法,结合具体实例形式分析了nodejs操作mysql连接池的相关模块安装、连接、查询等使用技巧,写的十分的全面细致,具有一定的参考价值,对此有需要的朋友可以参考学习下。如有不足之处,欢迎批评指正。

Nodejs如何使用MySQL

Nodejs要连接MySQL,可以使用Nodejs的MysQL驱动来实现。比如,我们这里使用"node-mysql"连接数据库。我们使用下面的方式来连接数据库: 首先,我们需要使用nodejs的包管理工具(npm)安装mysql的驱动。命令行如下:

npm install musql复制代码

现在,要在js文件中使用mysql,添加下面的代码到你的文件中:

var mysql = require('mysql');复制代码

接下来,我们就可以使用这个模块来连接MySQL数据库。当然要连接数据库需要指定MySQL Server的host name,用户名和密码等。还有其他的很多选项可以设置,比如数据库的时区、socketPath、和本地地址等。

var connection = mysql.createConnection({  host : "hostName",  user : "username",  password: "password"});//欢迎加入前端全栈开发交流圈一起吹水聊天学习交流:864305860复制代码

那么,下面的代码会为你建立一个新的连接。

connection.connect();复制代码

使用这个连接对象,我们可以像下面一样查询数据库。我们可以使用connection.escape()方法防止sql注入

connection.query("use database1"); var strQuery = "select * from table1"; connection.query( strQuery, function(err, rows){  if(err) {   throw err;  }else{   console.log( rows );  }});//欢迎加入前端全栈开发交流圈一起吹水聊天学习交流:864305860复制代码

最后,我们可以用两种方法关闭连接。用connection.end或者connection.destroy。 下面的表达式会确保所有队列中的查询在数据库连接关闭前都会被执行。请注意,这里有一个回调函数。

connection.end(function(err){// Do something after the connection is gracefully terminated.});//欢迎加入前端全栈开发交流圈一起吹水聊天学习交流:864305860复制代码

下面的表达式会立即关闭数据库连接。并且没有回调函数或者触发任何事件。

connection.destroy( );复制代码

Nodejs使用MysQL的连接池

使用连接池可以帮助我们更好的管理数据库连接。数据库连接池可以限制连接的最大数量,复用已有的连接等。 首先,我们需要创建一个连接池:

var mysql = require('mysql');var pool = mysql.createPool({ host : "hostName", user : "username", password: "password"});复制代码

其次,我们可以从创建的连接池中获取到一个我们需要的连接:

pool.getConnection(function(err, connection){});//欢迎加入前端全栈开发交流圈一起吹水聊天学习交流:864305860复制代码

使用回调函数的参数connection来查询数据库。最后使用connection.realease()方法释放数据库连接。

pool.getConnection(function(err, connection){ connection.query( "select * from table1", function(err, rows){  if(err) {   throw err;  }else{   console.log( rows );  } }); connection.release();});//欢迎加入前端全栈开发交流圈一起吹水聊天学习交流:864305860复制代码

执行多条查询语句

为了安全起见,默认情况下是不允许执行多条查询语句的。要使用多条查询语句的功能,就需要在创建数据库连接的时候打开这一功能:

var connection = mysql.createConnection( { multipleStatements: true } );复制代码

这一功能打开以后,你就可以像下面的例子一样同时使用多条查询语句:

connection.query('select column1; select column2; select column3;', function(err, result){ if(err){  throw err; }else{  console.log(result[0]);  // Column1 as a result  console.log(result[1]);  // Column2 as a result  console.log(result[2]);  // Column3 as a result }});复制代码

node.js中mysql连接池的使用

如果不想程序在查询数据时卡死或等待过长时间,一般不推荐在node中开启一个连接后全部查询都用这个链接并且不关闭,因为,你试了就知道为什么了 Node.js mysql连接池模块

  1. 安装node的mysql模块
npm -install -g node-mysql复制代码
  1. 建立一个类库,就叫mysql.js吧,然后内容如下:
var mysql=require("mysql");var pool = mysql.createPool({ host: 'localhost', user: 'user', password: 'password', database: 'database', port: port});//欢迎加入前端全栈开发交流圈一起吹水聊天学习交流:864305860var 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;//欢迎加入前端全栈开发交流圈一起吹水聊天学习交流:864305860复制代码
  1. 在js类使用如下
var query=require("./lib/mysql.js");query("select 1 from 1",function(err,vals,fields){ //do something});//欢迎加入前端全栈开发交流圈一起吹水聊天学习交流:864305860复制代码

结语

感谢您的观看,如有不足之处,欢迎批评指正。

本次给大家推荐一个免费的学习群,里面概括移动应用网站开发,css,html,webpack,vue node angular以及面试资源等。 对web开发技术感兴趣的同学,欢迎加入Q群:864305860,不管你是小白还是大牛我都欢迎,还有大牛整理的一套高效率学习路线和教程与您免费分享,同时每天更新视频资料。 最后,祝大家早日学有所成,拿到满意offer,快速升职加薪,走上人生巅峰。

转载于:https://juejin.im/post/5c20da05f265da6163021501

你可能感兴趣的文章
oracle ORA-00060死锁查询、表空间扩容
查看>>
转载自https://github.com/jsfront/src/blob/master/css.md
查看>>
MySQL索引优化分析(上)
查看>>
jquery $().each,$.each的区别
查看>>
sql server 2000/2005 游标的使用操作(转)
查看>>
Tomcat 部署 Web 通过 ip 直接访问项目
查看>>
Cache Fusion
查看>>
bzoj2502
查看>>
Xcode 控制台打印Unicode字符串转换为中文
查看>>
Codeforces 831C--Jury Marks (思维)
查看>>
oracle内存结构+系统全局区+程序全局区(pga)+排序区+大型池+java池
查看>>
成长7 - lambda,filter,map的运用
查看>>
New Concept English Two 18 46
查看>>
Qt 删除目录
查看>>
Git 移除某些文件
查看>>
poj2940
查看>>
django做form表单的数据验证
查看>>
【OpenFOAM】——OpenFOAM入门算例学习
查看>>
STL UVA 11991 Easy Problem from Rujia Liu?
查看>>
模拟 URAL 1149 Sinus Dances
查看>>