HTML5 Indexed Database API 入門(2) - IDBFactory 與資料庫物件

HTML5 Indexed Database API 入門系列

資料庫(Database)是Indexed Database 機制的基礎,被用來維護資料物件,下圖簡要說明資料庫的結構:


可以建立一個以上的資料庫以進行各種資料的管理護作業,每一個資料庫包含一個以上的物件倉儲(object store),是資料真正儲存的地方,就如同關聯式資料庫中的資料表。

Indexed Database API 支援資料庫與物件倉儲操作所需的介面與方法成員,當你要進行資料維謢工作,第一步便是建立資料庫連線,開啟資料庫之後,接下來就是取出所要操作的物件倉儲即可開始執行資料庫作業。

建立資料庫連線所需的方法,由 IDBFactory 定義,也是你在實作資料處理功能之前第一個必須瞭解的介面,以下列舉其定義:

interface IDBFactory {
    IDBOpenDBRequest open (DOMString name,
[EnforceRange] optional unsigned long long version);
    IDBOpenDBRequest deleteDatabase (DOMString name);
    short cmp (any first, any second);
};

其中 open() 將執行開啟資料庫的操作,第一個參數 name 為所要開啟的資料庫名稱,而 deleteDatabase 則刪除指定的資料庫,其中的參數 name 則是所要刪除的資料庫名稱。而最後一個 cmp 針對其中的兩個參數進行比較,如果 first 大於 second 回傳 1 ,反之則是 -1 ,兩個相等則是 0 。
無論 open() 或是 delete() ,均是以非同步進行,這些方法執行完畢之後,都將回傳一個 IDBRequest 介面定義的物件,代表對資料庫提出非同步要求所得到的回應結果,介面的定義如下:

interface IDBRequest : EventTarget {
    readonly attribute any            result;
    readonly attribute DOMError      error;
    readonly attribute Object         source;
    readonly attribute IDBTransaction transaction;
    readonly attribute DOMString      readyState;
    [TreatNonCallableAsNull]
             attribute Function?      onsuccess;
    [TreatNonCallableAsNull]
             attribute Function?      onerror;
};

其中的成員,包含支援接下來的資料庫操作所需的事件回應屬性,以及表示資料庫作業的結果屬性,列舉說明如下表:

成員
說明
result
資料庫操作完成之後回傳的結果。
error
發生的錯誤。
source
回傳操作要求來源。
transaction
回傳操作要求的交易物件。
readyState
操作未完成,回傳 pending 字串,否則回傳 done 結果字串。
onsuccess
操作成功之後,回應 success 事件的回應函式。
onerror
操作失敗之後,回應 error 事件的回應函式。

具備相關的介面概念,就可以建立資料庫連線,討論實際的資料庫功能實作了。

HTML5 Indexed Database API 入門系列

沒有留言: