用node.js操作Firebird資料庫。

langyahappy發表於2016-01-13

FireBird

  Firebird是一個跨平臺的關聯式資料庫系統,目前能夠執行在Windows、linux和各種Unix作業系統上,提供了大部分SQL-99標準的功能。它既能作為多使用者環境下的資料庫伺服器執行,也提供嵌入式資料庫的實現。

  Firebird脫胎於Borland公司的開源版資料庫Interbase6.0,是一個完全非商業化的產品,用C和C++開發。

  一個firebird資料庫伺服器能夠管理多個獨立的資料庫,每一個資料庫同時可支援多個客戶端連結。總之:它是一個開源的,強大的,可以自由使用的資料庫(即使是商業上的使用)。

1

特點

Firebird是一個真正的關聯式資料庫,支援儲存過程、檢視、觸發器、事務等大型關聯式資料庫的所有特性;

Firebird支援SQL92的絕大部分命令,並且支援大部分SQL99命令,新版Firebird 2.0對SQL99的支援更完整;

Firebird原始碼基於成熟的商業資料庫Interbase,有良好的穩定性,與Interbase有良好的相容性; 不用考慮授權費用(免費),不用擔心將來有一天你或你的客戶因為使用盜版而被資料庫開發商告上法庭;

釋出簡易,安裝檔案只有幾M,且高度可定製,客戶端的分發也很簡單,只需一個DLL檔案; Firebird的一嵌入式伺服器版本,不用安裝,直接執行,基於單機開發首選;

Firebird的執行效率非常高;

具備高度可移植性,可在Linux,Unix,MacOS,Windows,Solaris系統下執行,而且資料庫格式完全一樣,不用修改;

開發環境支援良好,Delphi,C++Builder不用通過ODBC連線,直接用原生開發介面開發基於Firebird的程式。

為什麼使用FireBird?

  對於小型企業使用者而言,現在的開放原始碼資料庫有兩點不足:要麼太大(如MySQL、PostgreSQL);要麼太小,並且缺乏功能和文件(如HypersonicSQL和McKoi)。在很多應用環境中,使用者需要有一個大小適中且功能齊備的資料庫。

  Firebird相對來說比較小,其RPM版本只有2.6MB。這使其可以稱得上是理想的“嵌入式資料庫”,可用於與其它應用程式伺服器和應用程式捆綁。Firebird具有大部分成熟資料庫所具有的功能,比如支援儲存過程、SQL相容等。如果使用者有使用DB2或PostgreSQL的經驗,就會發現Firebird與它們的語法非常相似,資料型別和資料處理方式也很類似。

安裝

  前面講了那麼多關於FireBird的內容,現在開始來講解如何用Node來操作FireBird。

  如果想通過Node來操作FireBird,首先要安裝操作FireBird的模組——node-firebird。如下程式碼:

npm install node-firebird   安裝完成以後,我們就可以在程式中使用node來操作FireBird了,如下程式碼:

var FireBird = require('node-firebird');

Connection options

  當我們通過node來操作FireBird時,首先要對資料庫連線進行設定,包括連線的ip地址、埠號、資料庫名稱(可以是包括路徑的全名)、連線的使用者名稱、密碼。如下程式碼:

var options = {}; options.host = '127.0.0.1'; // 設定主機地址 options.port = 3050; // 埠號 options.database = '/home/user/test.fdb'; // 資料庫名稱 options.user = 'SYSDBA'; // 使用者名稱 options.password = 'masterkey'; // 密碼

  這樣資料庫的連線就設定完成了。

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方法用於建立資料庫,其語法格式如下:

FireBird.create(options, function(err, db));

如下程式碼:

FireBird.create(options,function(err,db){
    if(err)
        throw  err;
    console.log('建立資料庫成功');
    db.detach(); //關閉資料庫連線
});

注意:當資料庫存在時候,用該方法建立資料庫會將原資料庫覆蓋,從而導致資料丟失。

query

  db.query方法的用法前面已經介紹了一些,在這裡將繼續給大家講db.query()的用法。當query語句中是查詢語句時,返回的結果為物件型別的陣列(即result的值)。我們可以使用db.query()對資料庫中的表進行新增,修改,刪除,更新操作。db.query()有兩種用法,一種是無引數的查詢,一種是有引數的查詢。

有引數的查詢:

db.query(query, [params], function(err, result))

例項程式碼如下向表a中插入資料:

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表中的資料:

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();
    });
});

有興趣的可以到http://www.hubwiz.com/course/568a12077ab6169165ef35da/線上試一試。

相關文章