在Node中,我們在連接mysql數(shù)據(jù)庫的時(shí)候,因?yàn)镹ode沒有連接mysql的方法,需要使用第三方的包mysql。
yarnadd mysql
引入mysql第三方包
constmysql =require('mysql')
在引入之后,連接數(shù)據(jù)庫有兩種方法,一種是createConnection,另一種是createPool。
createConnection連接數(shù)據(jù)庫
constdb = mysql.createConnection({
host:'127.0.0.1',// localhost也可以
port:3306,
user:'root',
password:'123456',
database:'db'
})
// 連接數(shù)據(jù)庫
db.connect((err) =>{
if(err)return
console.log('Connection Success')
})
//TODO:數(shù)據(jù)查詢
db.query('sql語句',(err, res) =>{
if(err)returnconsole.log(err.message)
console.log(res)
})
// 斷開數(shù)據(jù)庫連接
db.end((err) =>{
if(err)return
console.log('Connection Closed')
})
以上是用createConnection連接數(shù)據(jù)庫的案例。
createPool創(chuàng)建連接池連接數(shù)據(jù)庫
我們知道建議一個(gè)連接池的成本很高,很浪費(fèi)性能。如果我們每接收一個(gè)客戶端請求,就建立一次連接或多個(gè)連接,很浪費(fèi)服務(wù)端的資源。
所以在服務(wù)端應(yīng)用程序中需要為多個(gè)數(shù)據(jù)庫連接創(chuàng)建并維護(hù)一個(gè)連接池,當(dāng)連接不需要的時(shí)候,這些連接可以緩存在連接池中,當(dāng)接收到下一個(gè)客戶端請求時(shí),從連接池中取出連接,就不需要再重新建立連接。
完整示例
constdb = mysql.createPool({
host:'127.0.0.1',// localhost也可以
port:3306,
user:'root',
password:'123456',
database:'db'
})
// 建立數(shù)據(jù)庫連接,如無連接可用則隱式的建立一個(gè)數(shù)據(jù)庫連接
db.getConnection((err, connection) =>{
if(err){
console.log('連接失敗')
}else{
console.log('連接成功')
db.query('sql語句',(err, res) =>{
if(err)returnconsole.log(err.message)
console.log(res)
// 當(dāng)不再使用時(shí),歸還到連接池中
? ? ? connection.release()
// 當(dāng)不再使用時(shí)并要從連接池中移除
? ? ? connection.destory()
? ? })
? }
// 當(dāng)連接池不需要使用時(shí),關(guān)閉連接池
? db.end()
})