Maison  >  Article  >  base de données  >  Quelle est la méthode de connexion au pool de connexions à la base de données node+mysql ?

Quelle est la méthode de connexion au pool de connexions à la base de données node+mysql ?

WBOY
WBOYavant
2023-05-30 21:35:241792parcourir

MySQL dispose de deux méthodes de connexion : l'une est une connexion directe et l'autre est une connexion poolée. Nous parlons de connexion poolée dans cet article.

Afin de dissiper toute confusion, j'ai brièvement écrit le code pour la connexion directe, comme suit :

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();

La différence entre createConnection et createPool est la suivante : la connexion createPool (pool de connexions) peut utiliser de manière plus raisonnable les données du serveur et réduire gaspillage de données

Après l'installation, commencez à écrire dans 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 
})

Après avoir établi le pool de connexions, vous pouvez directement utiliser la méthode getConnection de l'objet pool de connexions pour obtenir une connexion à partir du pool de connexions If. il n'y a aucune connexion disponible dans le pool de connexions, établit implicitement une connexion à la base de données.

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();
        }
      })
    }
  })
}

Présentez et appelez le module 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 et const query=require('./db') La différence

  • La première façon d'écrire n'obtient que le module " ./db ". Si vous devez utiliser d'autres éléments exportés, vous devez les obtenir à nouveau.

  • La deuxième méthode d'écriture obtient tous les éléments exportés par le module "./db", et il n'est pas nécessaire d'obtenir à plusieurs reprises différents éléments exportés dans le code.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer