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 相关文章推荐
javascript函数库-集合框架
Apr 27 Javascript
js 加载并解析XML字符串的代码
Dec 13 Javascript
跟着Jquery API学Jquery之一 选择器
Apr 07 Javascript
apycom出品的jQuery精美菜单破解方法
Feb 18 Javascript
js禁止小键盘输入数字功能代码
Aug 01 Javascript
利用了jquery的ajax实现二级联互动菜单
Dec 02 Javascript
javascript中的正则表达式使用指南
Mar 01 Javascript
Node.js的MongoDB驱动Mongoose基本使用教程
Mar 01 Javascript
Angular.Js之Scope作用域的学习教程
Apr 27 Javascript
详解基于webpack搭建react运行环境
Jun 01 Javascript
vue移动端html5页面根据屏幕适配的四种解决方法
Oct 19 Javascript
js中Map和Set的用法及区别实例详解
Feb 15 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
php中利用explode函数分割字符串到数组
2014/02/08 PHP
PHP基于SimpleXML生成和解析xml的方法示例
2017/07/17 PHP
jQuery select的操作实现代码
2009/05/06 Javascript
jQuery仿Excel表格编辑功能的实现代码
2013/05/01 Javascript
JavaScript实现点击按钮后变灰避免多次重复提交
2013/07/15 Javascript
Javascript学习笔记之 函数篇(三) : 闭包和引用
2014/11/23 Javascript
深入分析原生JavaScript事件
2014/12/29 Javascript
jQuery实现带滚动导航效果的全屏滚动相册实例
2015/06/19 Javascript
jQuery通过ajax请求php遍历json数组到table中的代码(推荐)
2016/06/12 Javascript
Nodejs抓取html页面内容(推荐)
2016/08/11 NodeJs
AngularJS入门教程之更多模板详解
2016/08/19 Javascript
值得分享的JavaScript实现图片轮播组件
2016/11/21 Javascript
bootstrapValidator表单验证插件学习
2016/12/30 Javascript
微信小程序 slider 详解及实例代码
2017/01/10 Javascript
Ionic 2 实现列表滑动删除按钮的方法
2017/01/22 Javascript
vue-cli入门之项目结构分析
2017/04/20 Javascript
VUE多层路由嵌套实现代码
2017/05/15 Javascript
Angularjs上传文件组件flowjs功能
2017/08/07 Javascript
详解利用Angular实现多团队模块化SPA开发框架
2017/11/27 Javascript
js字符串类型String常用操作实例总结
2019/07/05 Javascript
详解在Vue.js编写更好的v-for循环的6种技巧
2020/04/14 Javascript
python爬虫的工作原理
2017/03/05 Python
python中时间、日期、时间戳的转换的实现方法
2019/07/06 Python
Python判断字符串是否xx开始或结尾的示例
2019/08/08 Python
python 对任意数据和曲线进行拟合并求出函数表达式的三种解决方案
2020/02/18 Python
pycharm-professional-2020.1下载与激活的教程
2020/09/21 Python
怎么解决pycharm license Acti的方法
2020/10/28 Python
汉森批发:Hansen Wholesale
2018/05/24 全球购物
颇特女士香港官网:NET-A-PORTER香港
2021/03/08 全球购物
财务分析个人的自荐书范文
2013/11/24 职场文书
代理商会议邀请函
2014/01/27 职场文书
旅游安全协议书
2014/04/21 职场文书
财务会计求职信范文
2015/03/20 职场文书
公司搬迁通知
2015/04/20 职场文书
2015年语文教师工作总结
2015/05/25 职场文书
详解Python内置模块Collections
2022/03/22 Python