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 相关文章推荐
IE7提供XMLHttpRequest对象为兼容
Mar 08 Javascript
精解window.setTimeout()&window.setInterval()使用方式与参数传递问题!
Nov 23 Javascript
js弹窗代码 可以指定弹出间隔
Jul 03 Javascript
javascript定义函数的方法
Dec 06 Javascript
jQuery替换字符串(实例代码)
Nov 13 Javascript
javascript结合ajax读取txt文件内容
Dec 05 Javascript
javascript实现避免页面按钮重复提交
Jan 08 Javascript
js获取json元素数量的方法
Jan 27 Javascript
js简单实现标签云效果实例
Aug 06 Javascript
js实现简单秒表走动的时钟特效
Mar 25 Javascript
mongoose中利用populate处理嵌套的方法
May 26 Javascript
json数据格式常见操作示例
Jun 13 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
PHP4 与 MySQL 交互使用
2006/10/09 PHP
php 正则表达式小结
2009/08/31 PHP
简单的方法让你的后台登录更加安全(php中加session验证)
2012/08/22 PHP
PHP输出图像imagegif、imagejpeg与imagepng函数用法分析
2016/11/14 PHP
飞鱼(shqlsl) javascript作品集
2006/12/16 Javascript
javaScript对象和属性的创建方法
2007/01/15 Javascript
几款极品的javascript压缩混淆工具
2007/05/16 Javascript
js使用函数绑定技术改变事件处理程序的作用域
2011/12/26 Javascript
用unescape反编码得出汉字示例
2014/04/24 Javascript
实现图片预加载的三大方法及优缺点分析
2014/11/19 Javascript
浅谈js里面的InttoStr和StrtoInt
2016/06/14 Javascript
微信小程序-拍照或选择图片并上传文件
2017/01/06 Javascript
基于node.js制作简单爬虫教程
2017/06/29 Javascript
详解使用angularjs的ng-options时如何设置默认值(初始值)
2017/07/18 Javascript
JS实现获取word文档内容并输出显示到html页面示例
2018/06/23 Javascript
微信小程序自定义组件之可清除的input组件
2018/07/17 Javascript
vue点击自增和求和的实例代码
2019/11/06 Javascript
[06:20]2015国际邀请赛第三日top10
2015/08/08 DOTA
[01:58]DOTA2上海特级锦标赛现场采访:RTZ这个ID到底好不好
2016/03/25 DOTA
[01:03:33]Alliance vs TNC 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/18 DOTA
python进行两个表格对比的方法
2018/06/27 Python
python面试题小结附答案实例代码
2019/04/11 Python
python实现高斯投影正反算方式
2020/01/17 Python
linux centos 7.x 安装 python3.x 替换 python2.x的过程解析
2020/12/14 Python
PREMIUM-MALL法国:行李、箱包及配件在线
2019/05/30 全球购物
Molly Bracken法国电子商店:法国女性时尚品牌
2019/07/24 全球购物
文秘专业应届生求职信范文
2013/11/14 职场文书
2014年环境整治工作总结
2014/12/10 职场文书
以权谋私检举信范文
2015/03/02 职场文书
教师聘用意向书
2015/05/11 职场文书
身份证丢失证明
2015/06/19 职场文书
2016重阳节红领巾广播稿
2015/12/18 职场文书
Vue全家桶入门基础教程
2021/05/14 Vue.js
超详细教你怎么升级Mysql的版本
2021/05/19 MySQL
Python天气语音播报小助手
2021/09/25 Python
mysql的Buffer Pool存储及原理
2022/04/02 MySQL