nodejs之mysql连接池

参考:http://www.oschina.net/code/snippet_95289_25000      github地址: https://github.com/obullxl/osnode-site

1、配置config.json

{
    "dbhost": "localhost",
    "port": 3306,
    "user": "root",
    "password": "root",
    "db": "nodejs",
    "maxConnLimit": 60
}
2、db.js

/**
 * 数据库模块
 */
var config = require("../config");
 
var options = {
    'host': config.dbhost,
    'port': config.port,
    'user': config.user,
    'password': config.password,
    'database': config.db,
    //'charset': config.charset,
    'connectionLimit': config.maxConnLimit,
    'supportBigNumbers': true,
    'bigNumberStrings': true
};
 
var mysql = require('mysql');
var pool = mysql.createPool(options);
 
/**
 * 释放数据库连接
 */
exports.release = function(connection) {
    connection.end(function(error) {
        console.log('Connection closed');
    });
};
 
/**
 * 执行查询
 */
exports.execQuery = function(options) {
    pool.getConnection(function(error, connection) {
        if(error) {
            console.log('DB-获取数据库连接异常!');
            throw error;
        }
 
        /*
         * connection.query('USE ' + config.db, function(error, results) { if(error) { console.log('DB-选择数据库异常!'); connection.end(); throw error; } });
         */
 
        // 查询参数
        var sql = options['sql'];
        var args = options['args'];
        var handler = options['handler'];
 
        // 执行查询
        if(!args) {
            var query = connection.query(sql, function(error, results) {
                if(error) {
                    console.log('DB-执行查询语句异常!');
                    throw error;
                }
 
                // 处理结果
                handler(results);
            });
 
            console.log(query.sql);
        } else {
            var query = connection.query(sql, args, function(error, results) {
                if(error) {
                    console.log('DB-执行查询语句异常!');
                    throw error;
                }
 
                // 处理结果
                handler(results);
            });
 
            console.log(query.sql);
        }
 
        // 返回连接池
        connection.release(function(error) {
            if(error) {
                console.log('DB-关闭数据库连接异常!');
                throw error;
            }
        });
    });
};
3、测试:

var db = require("./db");

var options = {
    'sql':'SELECT * FROM test',
    'handler':function(results) {
        var data = '';
        for (var i=0; i<results.length; i++) {
            var firstResult = results[i];
            data += 'id: ' + firstResult['id']+'text: ' + firstResult['text'];
        }
        console.log(data);
    }
}

db.execQuery(options);





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

赶路人儿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值