PR

Web SQL DatabaseとIndexed Database API

2010年10月29日(金)
藤本 壱

データベースのオープンとObjectStoreの作成/オープン

それでは、Indexed Database APIの基本的な使い方を解説します。

まず、データベースを開くことから始めます。これは、indexedDBというオブジェクトの「open」というメソッドで行います。

indexedDB.open(データベース名, データベースの概要名)

このメソッドの戻り値は、オブジェクトになっています。このオブジェクトのonsuccessプロパティに、データベースを開くことに成功した時に実行する関数を指定します。関数のパラメータのオブジェクトには「result」というプロパティがあり、これがデータベースのオブジェクトを指します。

例えば、名前が「sample」で、概要が「Sample Database」のデータベースを開く場合、以下のような手順で処理をします。変数dbがデータベースを指します。

なお、Firefox 4 β6では、「indexedDB」ではなく「moz_indexedDB」と書く必要があります。

データベースを開いたら、次にObjectStoreを作成するか、または既存のObject Storeを開きます。

ObjectStoreを作る場合は、データベースのオブジェクトに対し、「createObjectStore」というメソッドを実行します(表7)。

db.createObjectStore(ObjectStore名, KeyPath, 自動連番)

表7: createObjectStoreメソッドのパラメータ

パラメータ 内容
ObjectStore名 ObjectStoreの名前
KeyPath 保存するオブジェクトのうち、キーとして使うプロパティの名前
自動連番 このパラメータにtrueを渡すと、キーのプロパティに自動的に連番が付けられる


一方、既存のObjectStoreを開く場合は、「objectStore」というメソッドを実行します。2つ目のパラメータの「0」は、ObjectStoreを読み書き可能にすることを意味します。

db.objectStore(ObjectStore名, 0);

createObjectStore/objectStoreメソッドともに、戻り値がObjectStoreオブジェクトを指します。

例えば、以下のようにObjectStoreを作りたいとします。

  1. 名前はaddress
  2. 「id」というプロパティに自動的に連番を振る
  3. 戻り値のオブジェクトを変数addrに割り当てる

この場合、以下のように書きます。

addr = db.createObjectStore('address', 'id', true);

データの読み書き

ObjectStoreを開いたら、そのオブジェクトのputメソッドで、オブジェクトを保存することができます。例えば、前述のように変数addrにObjectStoreを割り当てた場合、以下のように書くと、そのObjectStoreに表8のオブジェクトを保存することができます。

addr.put({ name : '山田太郎', address : '東京都' });

表8: 保存するオブジェクト

プロパティ
name 山田太郎
address 東京都


また、getというメソッドでオブジェクトを読み込むことができます。パラメータとして、オブジェクトのKeyを指定します。例えば、addrというObjectStoreから、Keyが1になっているオブジェクトを読み込むには、以下のように書きます。

addr.get(1);

getメソッドの戻り値のオブジェクトには、「onsuccess」というプロパティがあります。このプロパティに、読み込みに成功した時に実行する関数を指定します。以下のように書くと、読み込んだオブジェクトが変数objに代入されます。

ここまでで説明したほかに、ObjectStoreにインデックスを設定してオブジェクトを検索したり、カーソルを使ってオブジェクトを順に読み込んだりすることも可能です。

1969年生まれ。神戸大学工学部電子工学科卒。ソフトメーカー勤務後、フリーライターとして独立。現在では、パソコン関係およびマネー関係の書籍を中心に執筆活動を行っている。ブログ「The blog of H.Fujimoto」は、Movable TypeやWordPressの情報を中心に毎日更新している(http://www.h-fj.com/blog/)。

連載バックナンバー

Think IT会員サービス無料登録受付中

Think ITでは、より付加価値の高いコンテンツを会員サービスとして提供しています。会員登録を済ませてThink ITのWebサイトにログインすることでさまざまな限定特典を入手できるようになります。

Think IT会員サービスの概要とメリットをチェック

他にもこの記事が読まれています

Web SQL DatabaseとIndexed Database API | Think IT(シンクイット)

Think IT(シンクイット)

サイトに予期せぬエラーが起こりました。しばらくたってから再度お試しください。