HTML5支援本地端的資料庫儲存機制,這一系列文章,介紹Indexed Database相關API
W3C以Web Storage與Indexed Database API兩組規格取代被普遍接受Web SQL Database 技術,支援本地端的資料儲存作業,這兩者也成了 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;
};
其中的成員,包含支援資料庫操作所需的事件回應屬性,以及表示資料庫作業的結果屬性。
具備相關的介面概念,以下就如何建立資料庫連線,討論實際的資料庫功能實作。