標籤:
使用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 }});
Node.js使用MySQL的串連池