1. 程式人生 > >使用node連線mySQL,封裝自定義模組供外部呼叫

使用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連線資料庫的繁瑣操作了!這是本人寫的第二篇部落格,希望大家還能給一些好的意見,如果有錯誤也請及時跟我聯絡,謝謝!