本文实例讲述了 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 程序设计有所帮助
来源: http://www.jb51.net/article/134931.htm