您好,登錄后才能下訂單哦!
這篇“node+mysql數(shù)據(jù)庫連接池連接的方法是什么”文章的知識點大部分人都不太理解,所以小編給大家總結(jié)了以下內(nèi)容,內(nèi)容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“node+mysql數(shù)據(jù)庫連接池連接的方法是什么”文章吧。
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的區(qū)別是: createPool(連接池)連接可以更加合理的利用服務(wù)器資料,減少資料浪費
安裝之后在db/index.js中開始編寫:
const mysql = require("mysql") //創(chuàng)建連接池 const db= mysql.createPool({ host : 'localhost', //連接主機 port : 3306, //端口號 database : 'test', //連接的是哪一個庫 user : 'root', //用戶名 password : '', //密碼 connectionLimit : 50, //用于指定連接池中最大的鏈接數(shù),默認(rèn)屬性值為10. //用于指定允許掛起的最大連接數(shù),如果掛起的連接數(shù)超過該數(shù)值,就會立即拋出一個錯誤, //默認(rèn)屬性值為0.代表不允許被掛起的最大連接數(shù)。 queueLimit:3 })
建立了連接池之后,可以直接使用連接池對象的getConnection方法從連接池中獲取一個連接,如果連接池中沒有可用連接,將隱式的建立一個數(shù)據(jù)庫連接。
const mysql = require("mysql") //創(chuàng)建連接池 const db= mysql.createPool({ host : 'localhost', //連接主機 port : 3306, //端口號 database : 'test', //連接的是哪一個庫 user : 'root', //用戶名 password : '', //密碼 connectionLimit : 50, //用于指定連接池中最大的鏈接數(shù),默認(rèn)屬性值為10. //用于指定允許掛起的最大連接數(shù),如果掛起的連接數(shù)超過該數(shù)值,就會立即拋出一個錯誤, //默認(rèn)屬性值為0.代表不允許被掛起的最大連接數(shù)。 queueLimit:3 }) module.exports.query = (sql, values.callback) => { //err: 該參數(shù)是指操作失敗時的錯誤對象。 //connection: 該值為一個對象,代表獲取到的連接對象。當(dāng)連接失敗時,該值為undefined。 db.getConnection(function(err, connection) { if (err) { console.log('與mysql數(shù)據(jù)庫建立連接失敗'); pool.releaseConnection(); //釋放鏈接 } else { console.log('與mysql數(shù)據(jù)庫建立連接成功'); connection.query(sql,values,(err, res) => { if (err) { console.log('執(zhí)行sql語句失敗,查詢數(shù)據(jù)失敗'); //connection.release() 當(dāng)一個連接不需要使用時,使用該方法將其歸還到連接池中 release釋放 connection.release(); callback(err,null) } else { console.log('執(zhí)行sql語句成功'); callback(null,res) //pool.end() 當(dāng)一個連接池不需要使用時,可以使用該方法關(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ā)生了錯誤***',err) return } console.log('找到了',res) })
const query=require('./db').query與const query=require('./db')區(qū)別
第一種寫法只獲取到了"./db"模塊中的query函數(shù),如果需要使用其他導(dǎo)出項,則需要再次獲取。
第二種寫法獲取到了"./db"模塊導(dǎo)出的所有項,不需要在代碼中反復(fù)獲取不同的導(dǎo)出項。
以上就是關(guān)于“node+mysql數(shù)據(jù)庫連接池連接的方法是什么”這篇文章的內(nèi)容,相信大家都有了一定的了解,希望小編分享的內(nèi)容對大家有幫助,若想了解更多相關(guān)的知識內(nèi)容,請關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。