Node.js使用MySQL连接池的方法实例


Posted in Javascript onFebruary 11, 2018

本文实例讲述了Node.js使用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"
});

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

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 );
  }
});

最后,我们可以用两种方法关闭连接。用connection.end或者connection.destroy

下面的表达式会确保所有队列中的查询在数据库连接关闭前都会被执行。请注意,这里有一个回调函数。

connection.end(function(err){
// Do something after the connection is gracefully terminated.
});

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

connection.destroy( );

Nodejs使用MysQL的连接池

使用连接池可以帮助我们更好的管理数据库连接。数据库连接池可以限制连接的最大数量,复用已有的连接等。

首先,我们需要创建一个连接池:

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

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

pool.getConnection(function(err, connection){
});

使用回调函数的参数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();
});

执行多条查询语句

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

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

2. 建立一个类库,就叫mysql.js吧,然后内容如下:

var mysql=require("mysql");
var pool = mysql.createPool({
 host: 'localhost',
 user: 'user',
 password: 'password',
 database: 'database',
 port: port
});
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;

3. 在js类使用如下

var query=require("./lib/mysql.js");
query("select 1 from 1",function(err,vals,fields){
 //do something
});

希望本文所述对大家nodejs程序设计有所帮助。

Javascript 相关文章推荐
js arguments.callee的应用代码
May 07 Javascript
通过JavaScript控制字体大小的代码
Oct 04 Javascript
js正则表达式中test,exec,match方法的区别说明
Jan 29 Javascript
JS实现文字向下滚动完整实例
Feb 06 Javascript
实现placeholder效果的方案汇总
Jun 11 Javascript
非常棒的jQuery图片轮播效果
Apr 17 Javascript
在JS中a标签加入单击事件屏蔽href跳转页面
Dec 16 Javascript
Echarts动态加载多条折线图的实现代码
May 24 Javascript
iview的table组件自带的过滤器实现
Jul 12 Javascript
使用Layui搭建后台管理界面的操作方法
Sep 20 Javascript
微信小程序实现列表滚动头部吸顶的示例代码
Jul 12 Javascript
javascript实现支付宝滑块验证码效果
Jul 24 Javascript
vue中引用阿里字体图标的方法
Feb 10 #Javascript
Express进阶之log4js实用入门指南
Feb 10 #Javascript
Vue完整项目构建(进阶篇)
Feb 10 #Javascript
JS简单获得节点元素的方法示例
Feb 10 #Javascript
JS简单添加元素新节点的方法示例
Feb 10 #Javascript
vue.js系列中的vue-fontawesome使用
Feb 10 #Javascript
集成vue到jquery/bootstrap项目的方法
Feb 10 #jQuery
You might like
一个用php3编写的简单计数器
2006/10/09 PHP
用PHP和ACCESS写聊天室(十)
2006/10/09 PHP
php 保留小数点
2009/04/21 PHP
从零开始学YII2框架(三)扩展插件yii2-gird
2014/08/20 PHP
ecshop适应在PHP7的修改方法解决报错的实现
2016/11/01 PHP
thinkphp5.1框架容器与依赖注入实例分析
2019/07/23 PHP
Laravel 登录后清空COOKIE的操作方法
2019/10/14 PHP
PHP PDO和消息队列的个人理解与应用实例分析
2019/11/25 PHP
JQuery 常用方法基础教程
2009/02/06 Javascript
javascript 词法作用域和闭包分析说明
2010/08/12 Javascript
JavaScript.The.Good.Parts阅读笔记(一)假值与===运算符
2010/11/16 Javascript
关于JavaScript命名空间的一些心得
2014/06/07 Javascript
使用Chrome调试JavaScript的断点设置和调试技巧
2014/12/16 Javascript
javascript页面倒计时实例
2015/07/25 Javascript
基于Layer+jQuery的自定义弹框
2020/05/26 Javascript
jQuery中layer分页器的使用
2017/03/13 Javascript
浅谈关于axios和session的一些事
2017/07/13 Javascript
AngularJs用户登录问题处理(交互及验证、阻止FQ处理)
2017/10/26 Javascript
vue-cli实现多页面多路由的示例代码
2018/01/30 Javascript
详解Angular如何正确的操作DOM
2018/07/06 Javascript
Python操作CouchDB数据库简单示例
2015/03/10 Python
Python基础篇之初识Python必看攻略
2016/06/23 Python
python中subprocess批量执行linux命令
2018/04/27 Python
Windows下安装Scrapy
2018/10/17 Python
神经网络相关之基础概念的讲解
2018/12/29 Python
在Pycharm中自动添加时间日期作者等信息的方法
2019/01/16 Python
Python使用scrapy爬取阳光热线问政平台过程解析
2019/08/14 Python
在OpenCV里实现条码区域识别的方法示例
2019/12/04 Python
HTML5拖拉上传文件的简单实例
2017/01/11 HTML / CSS
Debenhams爱尔兰:英国知名的百货公司
2017/01/02 全球购物
经贸日语专业个人求职信
2013/12/13 职场文书
迟到早退检讨书
2014/02/10 职场文书
《小蝌蚪找妈妈》教学反思
2014/02/21 职场文书
在职党员进社区活动总结
2014/07/05 职场文书
开展批评与自我批评心得体会
2014/10/17 职场文书
英语投诉信范文
2015/07/03 职场文书