HTML5 Indexed Database API 入門(5) - IDBDatabase

HTML5 Indexed Database API 入門系列

在「開啟資料庫」這一篇的最後,談及如何取得資料庫物件的參考,而資料庫物件是一個IDBDatabase 型態物件,支援物件倉儲的管理維護,以下為其定義,其中的成員與各種資料庫作業有很大的關聯,這一篇簡要快速的來看看其中的意義。

interface IDBDatabase : EventTarget {
    readonly attribute DOMString            name;
    readonly attribute unsigned long long version;
    readonly attribute DOMStringList       objectStoreNames;
    IDBObjectStore createObjectStore (DOMString name,
optional IDBObjectStoreParameters optionalParameters);
    void deleteObjectStore (DOMString name);
    IDBTransaction transaction (any storeNames, optional DOMString mode);
    Void close ();
    [TreatNonCallableAsNull]
             attribute Function?          onabort;
    [TreatNonCallableAsNull]
             attribute Function?          onerror;
    [TreatNonCallableAsNull]
             attribute Function?          onversionchange;
};

屬性 objectStoreNames 回傳 DOMStringList 集合物件,包含目前資料庫中所有的物件倉儲名稱,經由迴圈列舉即可取得所有的物件倉儲。

方法成員 createObjectStore() 支援物件倉儲的建立,當你要建立一個新的物件倉儲,必須調用此方法並且指定倉儲名稱,執行完畢後將回傳一個指定名稱的 IDBObjectStore 型態物件,此型態定義了物件倉儲。

deleteObjectStore() 支援物件倉儲的刪除作業,只要指定的名稱即可將其刪除。

要特別注意 createObjectStore() 與 deleteObjectStore() 等異動倉儲的相關方法,無法直接調用,它們必須在變更資料庫版本時觸發的交易事件中,註冊對應的處理器以支援相關的功能,後續將有完整討論。

而當資料庫不再使用時,可以調用其中的 close() 方法關閉此資料庫連線,定義如下:

void close();

調用此方法,會將開啟連線的資料庫關閉,不過在連線關閉之前,會先完成所有基於此連線執行的交易作業,然後才會正式關閉連線,而內部的 closePending 旗標會被標示為 true 。

一旦連線關閉完成, closePending 旗標的值被切換至 false ,無法建立任何新的交易,換句話說,當任何一項交易被建立之前,會預先檢查這個旗標值,是 true 的話表示資料庫連線已經關閉,新的交易無法建立並且產生例外。

資料庫包含許多不同作業,當我們建立一個新的資料庫連線,首先必須針對資料庫建立儲存與管理資料所需的物件倉儲,然後執行資料維護作業,而這些操作牽涉到資料庫版本的設定與交易作業,下一篇從資料庫版本設定開始示範如何透過介面定義的成員引用,進行相關功能的實作。

HTML5 Indexed Database API 入門系列


沒有留言: