使用node連線mySQL,封裝自定義模組供外部呼叫
當我們使用node.js寫網站的時候,難免會有一些操作讓我們連線資料庫,並對資料庫經行操作,但是每次都需要對資料庫進行連線與斷開連線,所以,我寫下這篇文章,將連線資料庫的操作封裝到一個模組中,然後簡化外部呼叫的程式碼。廢話不多說,直接看node.js怎麼連線mysql:
1、使用npm安裝MySQL模組:
$ npm install mysql -S
2、在你需要對資料庫進行操作的地方引入模組mysql:
var mysql = require(‘mysql’);
3、建立連線,並且定義query語句(可以對資料庫進行操作):
這裡就你要多說幾句了,我們通過mysql下的createConnection方法可以為連線配置引數,如下程式碼:
var connection = mysql.createConnection({
host : 'localhost',
port : 3306,
database : 'myweb',
user : 'myroot',
password : 'myroot'
});
當引數配置完成後,我們就可以通過配置好的connection物件進行資料庫的連線,
connection.connect(function(err){});
當連線資料庫成功之後,我們就可以對資料庫進行操作了,即connection下邊的query方法(這裡注意,操作語句需要在建立好連線的回撥函式中)
connection.query(sql,[params],callback);
它接受三個引數,第一個是SQL語句,但是要注意,當傳變數的時候要用‘?’代替,不要使用字串拼接;第二個引數就是按照引數一中‘?’的順序將變數排列的陣列;第三個引數就是回撥函式,返回進行資料操作後的資料或者影響;(也可以傳兩個引數,SQL語句和回撥函式,但是這種方法不安全,同時會讓SQL語句過於複雜,所以我們一般不推薦使用)
4關閉連線:
同樣是connection下邊的方法,有兩種關閉方式,第一種是connection.end(function(err){}); 可以接受關閉連線後的回撥函式;第二種是connection.destroy(); 此方法與第一種的區別就是沒有回撥,直接銷燬連線;
5、 基本方法學到了之後,我們就可以自己封裝一個模組,供外部呼叫方便了;
A,首先,我們需要在建立一個mysql連線的配置模組database.config.js(方便後期修改),和一個進行操作的模組db.js(用於進行資料庫的連結和資料的操作);程式碼部分分別如下:
//a)database.config.js程式碼:
//配置連結資料庫引數
module.exports = {
host : 'localhost',
port : 3306,
database : 'myweb',
user : 'myroot',
password : 'myroot'
};
//b)db.js程式碼:
//定義資料庫query函式,向外暴露
var mysql = require('mysql');
var databaseConfig = require('./database.config'); //引入資料庫配置模組中的資料
//向外暴露方法
module.exports = {
query : function(sql,params,callback){
//每次使用的時候需要建立連結,資料操作完成之後要關閉連線
var connection = mysql.createConnection(databaseConfig);
connection.connect(function(err){
if(err){
console.log('資料庫連結失敗');
throw err;
}
//開始資料操作
connection.query( sql, params, function(err,results,fields ){
if(err){
console.log('資料操作失敗');
throw err;
}
//將查詢出來的資料返回給回撥函式,這個時候就沒有必要使用錯誤前置的思想了,因為我們在這個檔案中已經對錯誤進行了處理,如果資料檢索報錯,直接就會阻塞到這個檔案中
callback && callback(results, fields);
//results作為資料操作後的結果,fields作為資料庫連線的一些欄位,大家可以列印到控制檯觀察一下
//停止連結資料庫,必須再查詢語句後,要不然一呼叫這個方法,就直接停止連結,資料操作就會失敗
connection.end(function(err){
if(err){
console.log('關閉資料庫連線失敗!');
throw err;
}
});
});
});
}
};
B、封裝好了自定義模組之後,我們就可以在需要的地方輕鬆呼叫了,這個時候,你就會感覺到剛才做的工作是真的管用,以下是呼叫例項:
var db = require('./../model/db'); //引入剛才自定義的模組
//對資料庫操作(從show_cascade 表中檢索所有欄位,並打印出結果)
db.query('select * from show_cascade', [],function(results,fields){
console.log(results);
console.log(fields);
});
怎麼樣,有了這個方法,在也不用愁node.js連線資料庫的繁瑣操作了!這是本人寫的第二篇部落格,希望大家還能給一些好的意見,如果有錯誤也請及時跟我聯絡,謝謝!