IDBDatabase

by 1 contributor:

IndexedDB APIのIDBDatabaseインターフェイスは、データベースへの接続を提供します。 IDBDatabaseオブジェクトで、データベースのtransactionを開き、データベースのオブジェクト(データ)を生成したり、操作したり、削除したりできます。このインターフェイスはデータベースのバージョンを取得したり、統合したりする唯一の方法を提供します。

Note: Everything you do in IndexedDB always happens in the context of a transaction, representing interactions with data in the database. All objects in IndexedDB — including object stores, indexes, and cursors — are tied to a particular transaction. Thus, you cannot execute commands, access data, or open anything outside of a transaction.

メソッド

Inherits from: EventTarget

IDBDatabase.close
即座に応答して、別スレッドでデータベースを閉じる。
IDBDatabase.createObjectStore
新しくオブジェクトストアかインデックスを生成して返す。
IDBDatabase.deleteObjectStore
参照しているインデックスがあったとしても、接続中のデータベースで与えられた名前のオブジェクトストアを削除する。
IDBDatabase.transaction
オブジェクトストアにアクセスできるIDBTransaction.objectStoreメソッドを含むトランザクションオブジェクト (IDBTransaction)を即座に返す。別スレッドで実行される。

プロパティ

IDBDatabase.name 読取専用
接続しているデータベース名を含むDOMString
IDBDatabase.version 読取専用
接続しているデータベースのバージョンを含む64-bit integer。データベースが初めて作られた場合、この属性は空文字である。
IDBDatabase.objectStoreNames 読取専用
接続しているデータベースのobject stores名のリストを含むDOMStringList

イベントハンドラ

IDBDatabase.onabort
データベースの接続が中止された場合に発生する。
IDBDatabase.onerror
データベースへの接続が失敗した場合に発生する。
IDBDatabase.onversionchange

データベースの構造が(IDBOpenDBRequest.onupgradeneededイベントで変更されるか、IDBFactory.deleteDatabase がどこかで(ほとんどの場合、同じコンピューターの他のウィンドウやタブで)要求された場合に発生します。これはversion change transaction (see IDBVersionChangeEvent)とは異なりますが、関連があります。

次のコードスニペットでは、データベースを非同期で開き(IDBFactory)、成功と失敗の場合にイベントを登録し、アップグレードが必要な場合には、新しいオブジェクトストアを生成しています(IDBdatabase)。 完璧に動作する例は、 To-do Notifications app (view example live.)を見てください。

// Let us open our database
  var DBOpenRequest = window.indexedDB.open("toDoList", 4);

  // these two event handlers act on the IDBDatabase object, when the database is opened successfully, or not
  DBOpenRequest.onerror = function(event) {
    note.innerHTML += '<li>Error loading database.</li>';
  };
 
  DBOpenRequest.onsuccess = function(event) {
    note.innerHTML += '<li>Database initialised.</li>';
    
    // store the result of opening the database in the db variable. This is used a lot later on
    db = DBOpenRequest.result;
    
    // Run the displayData() function to populate the task list with all the to-do list data already in the IDB
    displayData();
  };
 
  // This event handles the event whereby a new version of the database needs to be created
  // Either one has not been created before, or a new version number has been submitted via the
  // window.indexedDB.open line above
 
  DBOpenRequest.onupgradeneeded = function(event) {
    var db = event.target.result;
    
    db.onerror = function(event) {
      note.innerHTML += '<li>Error loading database.</li>';
    };

    // Create an objectStore for this database using IDBDatabase.createObjectStore
    
    var objectStore = db.createObjectStore("toDoList", { keyPath: "taskTitle" });
    
    // define what data items the objectStore will contain
    
    objectStore.createIndex("hours", "hours", { unique: false });
    objectStore.createIndex("minutes", "minutes", { unique: false });
    objectStore.createIndex("day", "day", { unique: false });
    objectStore.createIndex("month", "month", { unique: false });
    objectStore.createIndex("year", "year", { unique: false });

    objectStore.createIndex("notified", "notified", { unique: false });
    
    note.innerHTML += '<li>Object store created.</li>';
  };

次の行は、データベースでトランザクションを開いて、そしてオブジェクトストアを開いて、内側のデータを操作しています。

    var objectStore = db.transaction('toDoList').objectStore('toDoList'); 

仕様

Specification Status Comment
Indexed Database API
The definition of 'IDBDatabase' in that specification.
勧告候補  

ブラウザ実装状況

Feature Chrome Firefox (Gecko) Internet Explorer Opera Safari (WebKit)
Basic support 23webkit
24
10 moz
16.0 (16.0)
10, partial 15 7.1
Feature Android Firefox Mobile (Gecko) Firefox OS IE Phone Opera Mobile Safari Mobile
Basic support 4.4 22.0 (22.0) 1.0.1 10 22 未サポート

関連情報

 

ドキュメントのタグと貢献者

Contributors to this page: YuichiNukiyama
最終更新者: YuichiNukiyama,