Node.js使用MySQL的連接池


使用Nodejs+MySQL肯定比PHP和MySQL的組合更適合做服務器端的開發。

使用Nodejs你會從他的異步行為中獲益良多。比如,提升性能,你無須在從已有的MySQL數據庫遷移到其他的NoSQL數據庫獲得性能的提升。

 

Nodejs如何使用MySQL

Nodejs要連接MySQL,可以使用Nodejs的MysQL驅動來實現。比如,我們這里使用“node-mysql”連接數據庫。我們使用下面的方式來連接數據庫:

首先,我們需要使用nodejs的包管理工具(npm)安裝mysql的驅動。命令行如下:

 

npm install musql


現在,要在js文件中使用mysql,添加下面的代碼到你的文件中:

 

 

var mysql =  require('mysql');


接下來,我們就可以使用這個模塊來連接MySQL數據庫。當然要連接數據庫需要指定MySQL Server的host name,用戶名和密碼等。還有其他的很多選項可以設置,比如數據庫的時區、socketPath、和本地地址等。

 

 

   var connection =  mysql.createConnection({
  	host : “hostName”,
  	user : “username”,
  	password: “password”
   });


那么,下面的代碼會為你建立一個新的連接。

 

 

connection.connect();


使用這個連接對象,我們可以像下面一樣查詢數據庫。我們可以使用connection.escape()方法防止sql注入。

 

 

connection.query(“use database1”);
  var strQuery = “select * from table1”;	
  
  connection.query( strQuery, function(err, rows){
  	if(err)	{
  		throw err;
  	}else{
  		console.log( rows );
  	}
  });

 

最后,我們可以用兩種方法關閉連接。用connection.end或者connection.destroy。

 

下面的表達式會確保所有隊列中的查詢在數據庫連接關閉前都會被執行。請注意,這里有一個回調函數。

 

connection.end(function(err){
// Do something after the connection is gracefully terminated.

});

 

下面的表達式會立即關閉數據庫連接。並且沒有回調函數或者觸發任何事件。

 

 

connection.destroy( );



Nodejs使用MysQL的連接池

 

使用連接池可以幫助我們更好的管理數據庫連接。數據庫連接池可以限制連接的最大數量,復用已有的連接等。

首先,我們需要創建一個連接池:

 

var mysql =  require('mysql');                  
  var pool =  mysql.createPool({
	host : “hostName”,
	user : “username”,
	password: “password”
  });


其次,我們可以從創建的連接池中獲取到一個我們需要的連接:

 

 

pool.getConnection(function(err, connection){
  
});


使用回調函數的參數connection來查詢數據庫。最后使用connection.realease()方法釋放數據庫連接。

 

 

pool.getConnection(function(err, connection){
  connection.query( “select * from table1”,  function(err, rows){
  	if(err)	{
  		throw err;
  	}else{
  		console.log( rows );
  	}
  });
  
  connection.release();
});



 

執行多條查詢語句

為了安全起見,默認情況下是不允許執行多條查詢語句的。要使用多條查詢語句的功能,就需要在創建數據庫連接的時候打開這一功能:

 

var connection =  mysql.createConnection( { multipleStatements: true } );

 

這一功能打開以后,你就可以像下面的例子一樣同時使用多條查詢語句:

 

 

connection.query('select column1; select column2; select column3;', function(err, result){
  if(err){
  	throw err;
  }else{
  	console.log(result[0]);       // Column1 as a result
  	console.log(result[1]);       // Column2 as a result
  	console.log(result[2]);       // Column3 as a result
  }
});




 

 

 

 

 

 

 

 

 

 



 

 

 

 



 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM