W3cubDocs

/DOM

IDBDatabase

The IDBDatabase interface of the IndexedDB API provides a connection to a database; you can use an IDBDatabase object to open a transaction on your database then create, manipulate, and delete objects (data) in that database. The interface provides the only way to get and manage versions of the database.

Note: This feature is available in Web Workers.

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.

Properties

IDBDatabase.name Read only
A DOMString that contains the name of the connected database.
IDBDatabase.version Read only
A 64-bit integer that contains the version of the connected database. When a database is first created, this attribute is an empty string.
IDBDatabase.objectStoreNames Read only
A DOMStringList that contains a list of the names of the object stores currently in the connected database.

Event handlers

IDBDatabase.onabort
Fires when access of the database is aborted.
IDBDatabase.onclose
Fires when the close event occurs; this happens when the database is unexpectedly closed, such as during application shutdown.
IDBDatabase.onerror
Fires when access to the database fails.
IDBDatabase.onversionchange

Fires when a database structure change (IDBOpenDBRequest.onupgradeneeded event orIDBFactory.deleteDatabase() was requested elsewhere (most probably in another window/tab on the same computer). This is different from the version change transaction (see IDBVersionChangeEvent), but it is related.

Methods

Inherits from: EventTarget

IDBDatabase.close()
Returns immediately and closes the connection to a database in a separate thread.
IDBDatabase.createObjectStore()
Creates and returns a new object store or index.
IDBDatabase.deleteObjectStore()
Destroys the object store with the given name in the connected database, along with any indexes that reference it.
IDBDatabase.transaction()
Immediately returns a transaction object (IDBTransaction) containing the IDBTransaction.objectStore method, which you can use to access your object store. Runs in a separate thread.

Example

In the following code snippet, we open a database asynchronously (IDBFactory), handle success and error cases, and create a new object store in the case that an upgrade is needed (IDBdatabase). For a complete working example, see our 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>';
  };

This next line opens up a transaction on the Database, then opens an object store that we can then manipulate the data inside of.

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

Specifications

Browser compatibilityUpdate compatibility data on GitHub

Desktop
Chrome Edge Firefox Internet Explorer Opera Safari
Basic support 24
24
23 — 57
Prefixed
Prefixed Requires the vendor prefix: webkit
Yes 16
16
10 — 16
Prefixed
Prefixed Requires the vendor prefix: moz
10
10
partial
15 7
Available in workers Yes
Yes
23 — 57
Prefixed
Prefixed Requires the vendor prefix: webkit
Yes 37 ? Yes ?
name 24
24
23 — 24
Prefixed
Prefixed Requires the vendor prefix: webkit
12 16
16
10 — 16
Prefixed
Prefixed Requires the vendor prefix: moz
10
10
partial
15 7
objectStoreNames 24
24
23 — 24
Prefixed
Prefixed Requires the vendor prefix: webkit
12 16
16
10 — 16
Prefixed
Prefixed Requires the vendor prefix: moz
10
10
partial
15 7
onabort 24
24
23 — 24
Prefixed
Prefixed Requires the vendor prefix: webkit
12 16
16
10 — 16
Prefixed
Prefixed Requires the vendor prefix: moz
10
10
partial
15 7
onclose 31
31
approx
Yes 50 ? Yes 10.1
onerror 24
24
23 — 24
Prefixed
Prefixed Requires the vendor prefix: webkit
12 16
16
10 — 16
Prefixed
Prefixed Requires the vendor prefix: moz
10
10
partial
15 7
onversionchange 24
24
23 — 24
Prefixed
Prefixed Requires the vendor prefix: webkit
? 16
16
10 — 16
Prefixed
Prefixed Requires the vendor prefix: moz
10
10
partial
15 7
version 24
24
23 — 24
Prefixed
Prefixed Requires the vendor prefix: webkit
12 16
16
10 — 16
Prefixed
Prefixed Requires the vendor prefix: moz
10
10
partial
15 7
close 24
24
23 — 24
Prefixed
Prefixed Requires the vendor prefix: webkit
12 16
16
10 — 16
Prefixed
Prefixed Requires the vendor prefix: moz
10
10
partial
15 7
createObjectStore 24
24
23 — 24
Prefixed
Prefixed Requires the vendor prefix: webkit
12 16
16
10 — 16
Prefixed
Prefixed Requires the vendor prefix: moz
10
10
partial
15 7
deleteObjectStore 24
24
23 — 24
Prefixed
Prefixed Requires the vendor prefix: webkit
12 16
16
10 — 16
Prefixed
Prefixed Requires the vendor prefix: moz
10
10
partial
15 7
transaction 24
24
23 — 24
Prefixed
Prefixed Requires the vendor prefix: webkit
12 16
16
10 — 16
Prefixed
Prefixed Requires the vendor prefix: moz
10
10
partial
15 7
Mobile
Android webview Chrome for Android Edge Mobile Firefox for Android Opera for Android iOS Safari Samsung Internet
Basic support Yes
Yes
? — 57
Prefixed
Prefixed Requires the vendor prefix: webkit
25
25
25 — 57
Prefixed
Prefixed Requires the vendor prefix: webkit
? 22 22 8 Yes
Yes
? — 7.0
Prefixed
Prefixed Requires the vendor prefix: webkit
Available in workers Yes
Yes
? — 57
Prefixed
Prefixed Requires the vendor prefix: webkit
Yes
Yes
25 — 57
Prefixed
Prefixed Requires the vendor prefix: webkit
Yes 37 Yes ? Yes
Yes
? — 7.0
Prefixed
Prefixed Requires the vendor prefix: webkit
name Yes Yes Yes 22 22 8 Yes
objectStoreNames Yes Yes Yes 22 22 8 Yes
onabort Yes Yes Yes 22 22 8 Yes
onclose Yes Yes Yes 50 Yes 10.1 Yes
onerror Yes Yes Yes 22 22 8 Yes
onversionchange Yes Yes ? 22 22 8 Yes
version Yes Yes Yes 22 22 8 Yes
close Yes Yes Yes 22 22 8 Yes
createObjectStore Yes Yes Yes 22 22 8 Yes
deleteObjectStore Yes Yes Yes 22 22 8 Yes
transaction Yes Yes Yes 22 22 8 Yes

See also

© 2005–2018 Mozilla Developer Network and individual contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/IDBDatabase