Rumah  >  Artikel  >  pangkalan data  >  Apakah kaedah sambungan kolam sambungan pangkalan data nod+mysql?

Apakah kaedah sambungan kolam sambungan pangkalan data nod+mysql?

WBOY
WBOYke hadapan
2023-05-30 21:35:241836semak imbas

MySQL mempunyai dua kaedah sambungan: satu sambungan langsung dan satu lagi sambungan terkumpul Kita bercakap tentang sambungan terkumpul dalam artikel ini.

Untuk menyelesaikan kekeliruan, saya akan menulis secara ringkas kod untuk sambungan terus, seperti berikut:

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

Perbezaan antara createConnection dan createPool ialah: createPool (kolam sambungan) sambungan boleh menjadi lebih munasabah Gunakan data pelayan untuk mengurangkan pembaziran data

Selepas pemasangan, mula menulis dalam 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 
})

Selepas mewujudkan kumpulan sambungan, anda boleh terus menggunakan objek kumpulan sambungankaedah getConnectionMendapat sambungan daripada kumpulan sambungan Jika tiada sambungan tersedia dalam kumpulan sambungan, sambungan pangkalan data akan diwujudkan secara tersirat.

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

Memperkenalkan modul db panggilan

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

Perbezaan antara const query=require('./db').query dan const query=require('./db')

  • Cara penulisan pertama hanya memperoleh fungsi pertanyaan dalam modul "./db" Jika anda perlu menggunakan item lain yang dieksport, anda perlu mendapatkannya semula.

  • Kaedah penulisan kedua memperoleh semua item yang dieksport oleh modul "./db", dan tidak perlu berulang kali mendapatkan item eksport yang berbeza dalam kod.

Atas ialah kandungan terperinci Apakah kaedah sambungan kolam sambungan pangkalan data nod+mysql?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam