1. 程式人生 > 其它 >nodejs連線mysql——createPool&createConnection區別

nodejs連線mysql——createPool&createConnection區別

createConnection 建立連線&關閉連線

語法

(1)createConnection方法建立連線物件(正式的說法:使用createConnection方法建立一個表示與mysql資料庫伺服器之間連線的connection物件)

var connection = mysql.createConnection(options);

(2)用物件的connect方法建立連線。

connection.connect(function(err) { *** });

(3)關閉連線:connection物件的end方法和destory方法。

connection.end(function(err) { *** });
connection.destroy();

完整示例

varconnection=mysql.createConnection({
host:'localhost',
port:3306,
user:'root',
password:'123456',
database:'test'
});

// 連線
connection.connect(function(err){
if(err){
console.log('[query]-:'+err);
return;
}
console.log('[connectionconnect]succeed!');
});

// 查詢資料
connection.query('SELECT1+1ASsolution',function(error,results,fields){
if(error)throwerror;
console.log('Thesolutionis:',results[0].solution);
});

//關閉連線
connection.end(function(err){
if(err){
return;
}
console.log('[connectionend]succeed!');
});

createPool 建立連線池

在開發web應用程式時,連線池是一個很重要的概念。建立一個數據庫連線所消耗的效能成本是很高的。在伺服器應用程式中,如果為每一個接收到的客戶端請求都建立一個或多個數據庫連線,將嚴重降低應用程式效能。

因此在伺服器應用程式中通常需要為多個數據庫連線建立並維護一個連線池,當連線不再需要時,這些連線可以快取在連線池中,當接收到下一個客戶端請求時,從連線池中取出連線並重新利用,而不需要再重新建立連線。

語法

(1)建立連線池 createPool方法

var pool = mysql.createPool(optioins);

options引數包含createConnection方法中可以使用的各種屬性,除此之外還有以下屬性:createConnection,waitForConnections,connectionLimit,queueLimit。

(2)從連線池中取出連線。getConnection方法。如無連線可用則隱式的建立一個數據庫連線。

pool.getConnection(function(err,connection))

回撥函式中的err為錯誤物件,connection為獲取到的連線物件。

(3)當連線不再使用時,用connection物件的release方法將其歸還到連線池中。

connection.release();

(4)當一個連線不再需要使用且需要從連線池中移除時,用connection物件的destroy方法。

connection.destroy(); 

連線移除後,連線池中的連線數減一。

(5)當一個連線池不再需要使用時,用連線池物件的end方法關閉連線池。

pool.end();

完整示例

varpool=mysql.createPool({
host:'localhost',
port:3306,
user:'root',
password:'123456',
database:'test'
});
pool.getConnection(function(err,connection){
if(err){
console.log("建立連線失敗");
}else{
console.log("建立連線成功");
console.log(pool._allConnections.length);//1
connection.query('select*fromuser',function(err,rows){
if(err){
console.log("查詢失敗");
}else{
console.log(rows);
}
//connection.destory();
console.log(pool._allConnections.length);//0
})
}
pool.end();
})

本文連線:https://www.cnblogs.com/xsilence/p/12444228.html