Node.js操作Firebird數(shù)據(jù)庫教程

字號:


    Firebird是一個跨平臺的關系數(shù)據(jù)庫系統(tǒng),目前能夠運行在Windows、linux和各種Unix操作系統(tǒng)上,提供了大部分SQL-99標準的功能。它既能作為多用戶環(huán)境下的數(shù)據(jù)庫服務器運行,也提供嵌入式數(shù)據(jù)庫的實現(xiàn)。
    Firebird脫胎于Borland公司的開源版數(shù)據(jù)庫Interbase6.0,是一個完全非商業(yè)化的產品,用C和C++開發(fā)。
    一個firebird數(shù)據(jù)庫服務器能夠管理多個獨立的數(shù)據(jù)庫,每一個數(shù)據(jù)庫同時可支持多個客戶端連結??傊核且粋€開源的,強大的,可以自由使用的數(shù)據(jù)庫(即使是商業(yè)上的使用)。
    特點
    Firebird是一個真正的關系數(shù)據(jù)庫,支持存儲過程、視圖、觸發(fā)器、事務等大型關系數(shù)據(jù)庫的所有特性;
    Firebird支持SQL92的絕大部分命令,并且支持大部分SQL99命令,新版Firebird 2.0對SQL99的支持更完整;
    Firebird源碼基于成熟的商業(yè)數(shù)據(jù)庫Interbase,有良好的穩(wěn)定性,與Interbase有良好的兼容性; 
    不用考慮授權費用(免費),不用擔心將來有一天你或你的客戶因為使用盜版而被數(shù)據(jù)庫開發(fā)商告上法庭;
    發(fā)布簡易,安裝文件只有幾M,且高度可定制,客戶端的分發(fā)也很簡單,只需一個DLL文件; 
    Firebird的一嵌入式服務器版本,不用安裝,直接運行,基于單機開發(fā)首選;
    Firebird的運行效率非常高;
    具備高度可移植性,可在Linux,Unix,MacOS,Windows,Solaris系統(tǒng)下運行,而且數(shù)據(jù)庫格式完全一樣,不用修改;
    開發(fā)環(huán)境支持良好,Delphi,C++Builder不用通過ODBC連接,直接用原生開發(fā)接口開發(fā)基于Firebird的程序。
    為什么使用FireBird?
    對于小型企業(yè)用戶而言,現(xiàn)在的開放源碼數(shù)據(jù)庫有兩點不足:要么太大(如MySQL、PostgreSQL);要么太小,并且缺乏功能和文檔(如HypersonicSQL和McKoi)。在很多應用環(huán)境中,用戶需要有一個大小適中且功能齊備的數(shù)據(jù)庫。
    Firebird相對來說比較小,其RPM版本只有2.6MB。這使其可以稱得上是理想的“嵌入式數(shù)據(jù)庫”,可用于與其它應用程序服務器和應用程序捆綁。Firebird具有大部分成熟數(shù)據(jù)庫所具有的功能,比如支持存儲過程、SQL兼容等。如果用戶有使用DB2或PostgreSQL的經驗,就會發(fā)現(xiàn)Firebird與它們的語法非常相似,數(shù)據(jù)類型和數(shù)據(jù)處理方式也很類似。
    安裝
    前面講了那么多關于FireBird的內容,現(xiàn)在開始來講解如何用Node來操作FireBird。
    如果想通過Node來操作FireBird,首先要安裝操作FireBird的模塊——node-firebird。如下代碼:
    npm install node-firebird
    安裝完成以后,我們就可以在程序中使用node來操作FireBird了,如下代碼:
    var FireBird = require('node-firebird');
    Connection options
    當我們通過node來操作FireBird時,首先要對數(shù)據(jù)庫連接進行設置,包括連接的ip地址、端口號、數(shù)據(jù)庫名稱(可以是包括路徑的全名)、連接的用戶名、密碼。如下代碼:
    var options = {};
    options.host = '127.0.0.1';          // 設置主機地址
    options.port = 3050;              // 端口號
    options.database = '/home/user/test.fdb';   // 數(shù)據(jù)庫名稱
    options.user = 'SYSDBA';            // 用戶名
    options.password = 'masterkey';        // 密碼
    這樣數(shù)據(jù)庫的連接就設置完成了。
    escape
    在node-firebird模塊中有一個名為escape的方法,它的返回值為String類型。使用該方法可以防止SQL注入,如下代碼:
    FireBird.escape(value) -> return {String}
    實例如下:
    var FireBird = require('node-firebird');
    var sql1 = 'SELECT * FROM a WHERE ID='+Firebird.escape(2) ;
    console.log(sql1);
    create
    create方法用于建立數(shù)據(jù)庫,其語法格式如下:
    FireBird.create(options, function(err, db));
    如下代碼:
    FireBird.create(options,function(err,db){
      if(err)
        throw err;
      console.log('創(chuàng)建數(shù)據(jù)庫成功');
      db.detach(); //關閉數(shù)據(jù)庫連接
    });
    注意:當數(shù)據(jù)庫存在時候,用該方法建立數(shù)據(jù)庫會將原數(shù)據(jù)庫覆蓋,從而導致數(shù)據(jù)丟失。
    query
    db.query方法的用法前面已經介紹了一些,在這里將繼續(xù)給大家講db.query()的用法。當query語句中是查詢語句時,返回的結果為對象類型的數(shù)組(即result的值)。我們可以使用db.query()對數(shù)據(jù)庫中的表進行添加,修改,刪除,更新操作。db.query()有兩種用法,一種是無參數(shù)的查詢,一種是有參數(shù)的查詢。
    有參數(shù)的查詢:
    db.query(query, [params], function(err, result))
    實例代碼如下向表a中插入數(shù)據(jù):
    FireBird.attach(options, function(err, db) {
      if (err)
        throw err;
      // db = DATABASE
      db.query('insert into a (id,name) values(?,?)',[1,'Tom'], function(err, result) {
        if (err)
          throw err;
        console.log("insert success!");
        db.detach();
      });
    });
    實例代碼更新a表中的數(shù)據(jù):
    FireBird.attach(options, function(err, db) {
      if (err)
      throw err;
      // db = DATABASE
      db.query("update a set name='Ann' where id=1", function(err, result) {
        if (err)
          throw err;
        console.log("update success!");
        db.detach();
      });
    });
    以上就是本文的全部內容,教會大家如何使用Node.js操作Firebird數(shù)據(jù)庫,希望大家喜歡。