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 相关文章推荐
jquery.validate使用攻略 第一部
Jul 01 Javascript
JavaScript截取字符串的2个函数介绍
Aug 27 Javascript
Position属性之relative用法
Dec 14 Javascript
javascript实现瀑布流动态加载图片原理
Aug 12 Javascript
ReactNative实现Toast的示例
Dec 31 Javascript
深入理解ES6之数据解构的用法
Jan 13 Javascript
javascript显示动态时间的方法汇总
Jul 06 Javascript
原生JS实现的自动轮播图功能详解
Dec 28 Javascript
JavaScript 性能提升之路(推荐)
Apr 10 Javascript
JavaScript之scrollTop、scrollHeight、offsetTop、offsetHeight等属性学习笔记
Jul 15 Javascript
详解 javascript对象创建模式
Oct 30 Javascript
three.js如何实现3D动态文字效果
Mar 03 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之COOKIE支持详解
2010/09/20 PHP
PHP获取和操作配置文件php.ini的几个函数介绍
2013/06/24 PHP
php实现分页显示
2015/11/03 PHP
php安装php_rar扩展实现rar文件读取和解压的方法
2016/11/17 PHP
用JAVASCRIPT如何给<textarea></textarea>赋值
2007/04/20 Javascript
用jquery实现下拉菜单效果的代码
2010/07/25 Javascript
简略的前端架构心得&&基于editor为例子的编码小技巧
2010/11/25 Javascript
js中符号转意问题示例探讨
2013/08/19 Javascript
Js判断CSS文件加载完毕的具体实现
2014/01/17 Javascript
Javascript 按位与运算符 (&)使用介绍
2014/02/04 Javascript
jQuery简单实现遍历数组的方法
2015/04/14 Javascript
学习Javascript面向对象编程之封装
2016/02/23 Javascript
基于JavaScript实现回到页面顶部动画代码
2016/05/24 Javascript
模仿password输入框的实现代码
2016/06/07 Javascript
Angularjs手动解析表达式($parse)
2016/10/12 Javascript
JS实现页面进入和返回定位到具体位置
2016/12/08 Javascript
JavaScript通过mouseover()实现图片变大效果的示例
2017/12/20 Javascript
Vue官网todoMVC示例代码
2018/01/29 Javascript
JS实现的input选择图片本地预览功能示例
2018/08/29 Javascript
JS中判断字符串存在和非空的方法
2018/09/12 Javascript
灵活使用console让js调试更简单的方法步骤
2019/04/23 Javascript
js实现踩五彩块游戏
2020/02/08 Javascript
JavaScript中如何调用Java方法
2020/09/16 Javascript
在ironpython中利用装饰器执行SQL操作的例子
2015/05/02 Python
人工智能最火编程语言 Python大战Java!
2017/11/13 Python
使用Django和Python创建Json response的方法
2018/03/26 Python
对Python中内置异常层次结构详解
2018/10/18 Python
python常用函数与用法示例
2019/07/02 Python
Python 实现try重新执行
2019/12/21 Python
pytorch查看通道数 维数 尺寸大小方式
2020/05/26 Python
Python接口自动化测试框架运行原理及流程
2020/11/30 Python
pytho matplotlib工具栏源码探析一之禁用工具栏、默认工具栏和工具栏管理器三种模式的差异
2021/02/25 Python
台湾百利市购物中心:e-Payless
2017/08/16 全球购物
高中生物教学反思
2014/02/05 职场文书
模范教师事迹材料
2014/12/16 职场文书
html5移动端禁止长按图片保存的实现
2021/04/20 HTML / CSS