>  기사  >  데이터 베이스  >  node+mysql 데이터베이스 연결 풀 연결 방법은 무엇인가요?

node+mysql 데이터베이스 연결 풀 연결 방법은 무엇인가요?

WBOY
WBOY앞으로
2023-05-30 21:35:241838검색

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" 모듈만 가져옵니다. 내보낸 다른 항목을 사용해야 하는 경우 해당 항목을 다시 가져와야 합니다.

  • 두 번째 작성 방법은 "./db" 모듈에서 내보낸 모든 항목을 가져오며, 코드에서 내보낸 다른 항목을 반복적으로 가져올 필요가 없습니다.

위 내용은 node+mysql 데이터베이스 연결 풀 연결 방법은 무엇인가요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제