nodejs连接mysql——createPool&createConnection区别

createConnection 建立连接&关闭连接

语法
(1)createConnection方法创建连接对象(正式的说法:使用createConnection方法创建一个表示与mysql数据库服务器之间连接的connection对象)

var connection = mysql.createConnection(options);

(2)用对象的connect方法建立连接。

connection.connect(function(err) { *** }); 

(3)关闭连接:connection对象的end方法和destory方法。

connection.end(function(err) { *** }); 
connection.destroy();

完整示例:

const connection = mysql.createPool({
        host: "localhost",
        user: "root",
        password: "root",
        database: "book",
        // 可选
        queueLimit: 3,
        connectionLimit: 20
    });

// 连接
connection.connect(function (err) {
    if (err) {
        console.log('[query] - :' + err);
        return;
    }
    console.log('[connection connect]  succeed!');
});

// 查询数据
connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
    if (error) throw error;
    console.log('The solution is: ', results[0].solution);
});

//关闭连接
connection.end(function (err) {
    if (err) {
        return;
    }
    console.log('[connection end] succeed!');
});

**

createPool 创建连接池

**
在开发web应用程序时,连接池是一个很重要的概念。建立一个数据库连接所消耗的性能成本是很高的。在服务器应用程序中,如果为每一个接收到的客户端请求都建立一个或多个数据库连接,将严重降低应用程序性能。
因此在服务器应用程序中通常需要为多个数据库连接创建并维护一个连接池,当连接不再需要时,这些连接可以缓存在连接池中,当接收到下一个客户端请求时,从连接池中取出连接并重新利用,而不需要再重新建立连接。

语法
(1)创建连接池 createPool方法

var pool = mysql.createPool(optioins);

options参数包含createConnection方法中可以使用的各种属性

(2)从连接池中取出连接。getConnection方法。。

pool.getConnection(function(err,connection))

回调函数中的err为错误对象,connection为获取到的连接对象。

(3)当连接不再使用时,用connection对象的release方法将其归还到连接池中。

connection.release();

(4)当一个连接不再需要使用且需要从连接池中移除时,用connection对象的destroy方法。

connection.destroy(); 

(5)当一个连接池不再需要使用时,用连接池对象的end方法关闭连接池。

pool.end();

完整示例:

var pool = mysql.createPool({
    host: "localhost",
    database: "pyh",
    user: "root",
    password: "root",
    connectionLimit: 50, //连接池中最大的连接数 (默认10)
    queueLimit: 3 //用于指定允许挂起的最大连接数,超过了会报错。
});

//建立连接
pool.getConnection(function(err, connection) {
    // 如果连接失败了,err就是错误信息对象。
    if(err){
        console.log("与mysql数据库建立连接失败:" + err);
    } else {
        console.log("与mysql数据库建立连接成功");
        connection.query("select * from book", (err, data) => {
        if (err) {
            console.log("查询失败:" + err);
            return
        }
        //对查询的结果进行操作。
        console.log(data);
        //释放连接 归还连接
        connection.release();

        //用连接池对象的end方法关闭连接池
        //pool.end();
    })
})
  • 5
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值