关于node+mysql数据库连接池连接

 更新时间:2023年04月18日 10:15:42   作者:阿晨学前端  
这篇文章主要介绍了关于node+mysql数据库连接池连接,mysql有两种连接方式:一种是直接连接 另一种是池化连接,我们这篇讲的是池化连接,需要的朋友可以参考下

 mysql有两种连接方式:一种是直接连接 另一种是池化连接,我们这篇讲的是池化连接。

为了让解惑,我简答的写份直接连接的代码,如下:

var mysql = require('mysql');
var connection = mysql.createConnection({
  host     : 'localhost',
  user     : 'ac',
  password : '123456',
  database : 'textPro'
});
 
connection.connect();
 
connection.query('SELECT * from1 userInfo', function (error, results, fields) {
  if (error) throw error;
  console.log('The solution is: ', results);
});
 
connection.end();

createConnection和createPool的区别是: createPool(连接池)连接可以更加合理的利用服务器资料,减少资料浪费

安装之后在db/index.js中开始编写:

const mysql = require("mysql")
 
//创建连接池
const db= mysql.createPool({  
    host : 'localhost', //连接主机
    port : 3306,   //端口号
    database : 'test',  //连接的是哪一个库
    user : 'root',   //用户名
    password : '',    //密码
    connectionLimit : 50, //用于指定连接池中最大的链接数,默认属性值为10. 
    //用于指定允许挂起的最大连接数,如果挂起的连接数超过该数值,就会立即抛出一个错误,
    //默认属性值为0.代表不允许被挂起的最大连接数。
    queueLimit:3 
})  

建立了连接池之后,可以直接使用连接池对象的getConnection方法从连接池中获取一个连接,如果连接池中没有可用连接,将隐式的建立一个数据库连接。

const mysql = require("mysql")
 
//创建连接池
const db= mysql.createPool({  
    host : 'localhost', //连接主机
    port : 3306,   //端口号
    database : 'test',  //连接的是哪一个库
    user : 'root',   //用户名
    password : '',    //密码
    connectionLimit : 50, //用于指定连接池中最大的链接数,默认属性值为10. 
    //用于指定允许挂起的最大连接数,如果挂起的连接数超过该数值,就会立即抛出一个错误,
    //默认属性值为0.代表不允许被挂起的最大连接数。
    queueLimit:3 
})  
 
module.exports.query = (sql, values.callback) => {
  //err: 该参数是指操作失败时的错误对象。
  //connection: 该值为一个对象,代表获取到的连接对象。当连接失败时,该值为undefined。
  db.getConnection(function(err, connection) {
    if (err) {
      console.log('与mysql数据库建立连接失败');
      pool.releaseConnection(); //释放链接
    } else {
      console.log('与mysql数据库建立连接成功');
      connection.query(sql,values,(err, res) => {
        if (err) {
          console.log('执行sql语句失败,查询数据失败');
          //connection.release() 当一个连接不需要使用时,使用该方法将其归还到连接池中 release释放
          connection.release();
          callback(err,null)
        } else {
           console.log('执行sql语句成功');
           callback(null,res)
          //pool.end() 当一个连接池不需要使用时,可以使用该方法关闭连接池
          pool.end();
        }
      })
    }
  })
}

引入 调用db模块

const query=require('./db').query;
let sql='SELECT * FROM class WHERE class_id=? AND class_name=?' 
let userId=1;
let userName='阿辰';
query(sql,[userId,userName],(err,res)=>{
    if(err){
        console.log('发生了错误***',err)
        return
    }
console.log('找到了',res)
})

const query=require('./db').query与const query=require('./db')区别

  • 第一种写法只获取到了"./db"模块中的query函数,如果需要使用其他导出项,则需要再次获取。
  • 第二种写法获取到了"./db"模块导出的所有项,不需要在代码中反复获取不同的导出项。

到此这篇关于关于node+mysql数据库连接池连接的文章就介绍到这了,更多相关node+mysql数据库连接内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Node.js中fs模块的使用方法

    Node.js中fs模块的使用方法

    这篇文章介绍了Node.js中fs模块的使用方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-06-06
  • node.js使用免费的阿里云ip查询获取ip所在地【推荐】

    node.js使用免费的阿里云ip查询获取ip所在地【推荐】

    这篇文章主要介绍了node.js使用免费的阿里云ip查询获取ip所在地的相关知识,非常不错,具有一定的参考借鉴价值 ,需要的朋友可以参考下
    2018-09-09
  • Nodejs实现内网穿透服务

    Nodejs实现内网穿透服务

    很多人都不知道什么是内网穿透,就是公网客户端,可以访问局域网内的服务,本文详细的介绍了原理以及实现,需要的朋友们下面随着小编来一起学习学习吧
    2021-05-05
  • 一文带你搞懂Node中的流

    一文带你搞懂Node中的流

    流,通俗来讲就是数据流动,数据从一个地方缓慢的流到另一个地方。本文将通过示例为大家详细讲讲Node中的流,感兴趣的可以了解一下
    2022-08-08
  • 基于node.js制作简单爬虫教程

    基于node.js制作简单爬虫教程

    这篇文章主要为大家详细介绍了基于node.js制作简单爬虫的教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-06-06
  • 使用Node实现Git仓库批量克隆的操作步骤

    使用Node实现Git仓库批量克隆的操作步骤

    分享一个node脚本,通过调用gitee的OpenApi获取自己的代码仓库列表,达到批量克隆项目的效果,文中通过代码示例和图文讲解的非常详细,感兴趣的小伙伴可以参考阅读一下
    2024-04-04
  • node.js中的buffer.copy方法使用说明

    node.js中的buffer.copy方法使用说明

    这篇文章主要介绍了node.js中的buffer.copy方法使用说明,本文介绍了buffer.copy的方法说明、语法、接收参数、使用实例和实现源码,需要的朋友可以参考下
    2014-12-12
  • 关于npm i几种常见命令的区别详解

    关于npm i几种常见命令的区别详解

    npm(Node.js Package Manager)是一个Node.js的包管理工具,用来解决Node.js代码部署问题,下面这篇文章主要给大家介绍了关于npm i几种常见命令的那点事,需要的朋友可以参考下
    2023-03-03
  • express + jwt + postMan验证实现持久化登录

    express + jwt + postMan验证实现持久化登录

    这篇文章主要介绍了express + jwt + postMan验证实现持久化登录,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-06-06
  • 用node.js写一个jenkins发版脚本

    用node.js写一个jenkins发版脚本

    这篇文章主要介绍了用node.js写一个jenkins发版脚本,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-05-05

最新评论