關(guān)于node+mysql數(shù)據(jù)庫(kù)連接池連接

mysql有兩種連接方式:一種是直接連接 另一種是池化連接,我們這篇講的是池化連接。
為了讓解惑,我簡(jiǎn)答的寫(xiě)份直接連接的代碼,如下:
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的區(qū)別是: createPool(連接池)連接可以更加合理的利用服務(wù)器資料,減少資料浪費(fèi)
安裝之后在db/index.js中開(kāi)始編寫(xiě):
const mysql = require("mysql")
//創(chuàng)建連接池
const db= mysql.createPool({
host : 'localhost', //連接主機(jī)
port : 3306, //端口號(hào)
database : 'test', //連接的是哪一個(gè)庫(kù)
user : 'root', //用戶名
password : '', //密碼
connectionLimit : 50, //用于指定連接池中最大的鏈接數(shù),默認(rèn)屬性值為10.
//用于指定允許掛起的最大連接數(shù),如果掛起的連接數(shù)超過(guò)該數(shù)值,就會(huì)立即拋出一個(gè)錯(cuò)誤,
//默認(rèn)屬性值為0.代表不允許被掛起的最大連接數(shù)。
queueLimit:3
}) 建立了連接池之后,可以直接使用連接池對(duì)象的getConnection方法從連接池中獲取一個(gè)連接,如果連接池中沒(méi)有可用連接,將隱式的建立一個(gè)數(shù)據(jù)庫(kù)連接。
const mysql = require("mysql")
//創(chuàng)建連接池
const db= mysql.createPool({
host : 'localhost', //連接主機(jī)
port : 3306, //端口號(hào)
database : 'test', //連接的是哪一個(gè)庫(kù)
user : 'root', //用戶名
password : '', //密碼
connectionLimit : 50, //用于指定連接池中最大的鏈接數(shù),默認(rèn)屬性值為10.
//用于指定允許掛起的最大連接數(shù),如果掛起的連接數(shù)超過(guò)該數(shù)值,就會(huì)立即拋出一個(gè)錯(cuò)誤,
//默認(rèn)屬性值為0.代表不允許被掛起的最大連接數(shù)。
queueLimit:3
})
module.exports.query = (sql, values.callback) => {
//err: 該參數(shù)是指操作失敗時(shí)的錯(cuò)誤對(duì)象。
//connection: 該值為一個(gè)對(duì)象,代表獲取到的連接對(duì)象。當(dāng)連接失敗時(shí),該值為undefined。
db.getConnection(function(err, connection) {
if (err) {
console.log('與mysql數(shù)據(jù)庫(kù)建立連接失敗');
pool.releaseConnection(); //釋放鏈接
} else {
console.log('與mysql數(shù)據(jù)庫(kù)建立連接成功');
connection.query(sql,values,(err, res) => {
if (err) {
console.log('執(zhí)行sql語(yǔ)句失敗,查詢數(shù)據(jù)失敗');
//connection.release() 當(dāng)一個(gè)連接不需要使用時(shí),使用該方法將其歸還到連接池中 release釋放
connection.release();
callback(err,null)
} else {
console.log('執(zhí)行sql語(yǔ)句成功');
callback(null,res)
//pool.end() 當(dāng)一個(gè)連接池不需要使用時(shí),可以使用該方法關(guān)閉連接池
pool.end();
}
})
}
})
}引入 調(diào)用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('發(fā)生了錯(cuò)誤***',err)
return
}
console.log('找到了',res)
})const query=require('./db').query與const query=require('./db')區(qū)別
- 第一種寫(xiě)法只獲取到了"./db"模塊中的query函數(shù),如果需要使用其他導(dǎo)出項(xiàng),則需要再次獲取。
- 第二種寫(xiě)法獲取到了"./db"模塊導(dǎo)出的所有項(xiàng),不需要在代碼中反復(fù)獲取不同的導(dǎo)出項(xiàng)。
到此這篇關(guān)于關(guān)于node+mysql數(shù)據(jù)庫(kù)連接池連接的文章就介紹到這了,更多相關(guān)node+mysql數(shù)據(jù)庫(kù)連接內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
node.js使用免費(fèi)的阿里云ip查詢獲取ip所在地【推薦】
這篇文章主要介紹了node.js使用免費(fèi)的阿里云ip查詢獲取ip所在地的相關(guān)知識(shí),非常不錯(cuò),具有一定的參考借鑒價(jià)值 ,需要的朋友可以參考下2018-09-09
Nodejs實(shí)現(xiàn)內(nèi)網(wǎng)穿透服務(wù)
很多人都不知道什么是內(nèi)網(wǎng)穿透,就是公網(wǎng)客戶端,可以訪問(wèn)局域網(wǎng)內(nèi)的服務(wù),本文詳細(xì)的介紹了原理以及實(shí)現(xiàn),需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-05-05
基于node.js制作簡(jiǎn)單爬蟲(chóng)教程
這篇文章主要為大家詳細(xì)介紹了基于node.js制作簡(jiǎn)單爬蟲(chóng)的教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-06-06
使用Node實(shí)現(xiàn)Git倉(cāng)庫(kù)批量克隆的操作步驟
分享一個(gè)node腳本,通過(guò)調(diào)用gitee的OpenApi獲取自己的代碼倉(cāng)庫(kù)列表,達(dá)到批量克隆項(xiàng)目的效果,文中通過(guò)代碼示例和圖文講解的非常詳細(xì),感興趣的小伙伴可以參考閱讀一下2024-04-04
node.js中的buffer.copy方法使用說(shuō)明
這篇文章主要介紹了node.js中的buffer.copy方法使用說(shuō)明,本文介紹了buffer.copy的方法說(shuō)明、語(yǔ)法、接收參數(shù)、使用實(shí)例和實(shí)現(xiàn)源碼,需要的朋友可以參考下2014-12-12
關(guān)于npm?i幾種常見(jiàn)命令的區(qū)別詳解
npm(Node.js Package Manager)是一個(gè)Node.js的包管理工具,用來(lái)解決Node.js代碼部署問(wèn)題,下面這篇文章主要給大家介紹了關(guān)于npm?i幾種常見(jiàn)命令的那點(diǎn)事,需要的朋友可以參考下2023-03-03
express + jwt + postMan驗(yàn)證實(shí)現(xiàn)持久化登錄
這篇文章主要介紹了express + jwt + postMan驗(yàn)證實(shí)現(xiàn)持久化登錄,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-06-06
用node.js寫(xiě)一個(gè)jenkins發(fā)版腳本
這篇文章主要介紹了用node.js寫(xiě)一個(gè)jenkins發(fā)版腳本,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-05-05

