IDBDatabase - 提供与 IndexedDB 数据库的连接

IDBDatabaseIndexedDB API 的接口,提供与数据库的连接;您可以使用 IDBDatabase 对象在数据库上打开事务,然后在该数据库中创建,操作和删除对象(数据)。该接口提供了获取和管理数据库版本的唯一方法。

注意: 此特性在 Web Worker 中可用。

注意:您在 IndexedDB 中执行的所有操作始终发生在事务的上下文中,事务表示与数据库中的数据的交互。 IndexedDB 中的所有对象(包括对象存储,索引和游标)都与特定事务相关联。因此,您无法在事务之外执行命令,访问数据或打开的任何内容。

属性

IDBDatabase.name 只读

一个 DOMString,包含已连接数据库的名称。

IDBDatabase.version 只读

一个 64 位整数,包含已连接数据库的版本。首次创建数据库时,此属性为空字符串。

IDBDatabase.objectStoreNames 只读

一个 DOMStringList,它包含当前在连接数据库中的对象库的名称列表。

方法

继承自:EventTarget

IDBDatabase.close()

立即返回并在单独的线程中关闭与数据库的连接。

IDBDatabase.createObjectStore()

创建并返回新的对象库或索引。

IDBDatabase.deleteObjectStore()

在连接的数据库中销毁具有给定名称的对象存储库以及引用它的任何索引。

IDBDatabase.transaction()

立即返回包含 IDBTransaction.objectStore 方法的事务对象(IDBTransaction),您可以使用该方法访问对象库。在单独的线程中运行。

事件

使用 addEventListener() 或通过为此接口的 oneventname 属性分配事件监听器来监听这些事件:

abort

当事务中止并且冒泡到连接对象时触发。也可以通过 onabort 属性绑定。

close

在意外关闭数据库连接时触发。也可以通过 onclose 属性绑定。

error

当请求返回错误并且事件冒泡到连接对象时触发。也可以通过 onerror 属性绑定。

versionchange

在请求数据库结构更改时触发。也可以通过 onversionchange 属性获得。

实例

在下面的代码片段中,我们异步打开一个数据库(IDBFactory),处理成功和错误的情况,并在需要升级的情况下创建一个新的对象存储(IDBdatabase)。有关完整的工作实例,请参阅我们的待办事项通知应用程序(查看在线实例。)

  // 让我们打开我们的数据库
  var DBOpenRequest = window.indexedDB.open("toDoList", 4);

  // 这两个事件处理程序用于当数据库成功/失败打开时,对 IDBDatabase 进行操作
  DBOpenRequest.onerror = function(event) {
    note.innerHTML += '<li>加载数据库出错。</li>';
  };

  DBOpenRequest.onsuccess = function(event) {
    note.innerHTML += '<li>数据库已初始化。</li>';

    // 存储在 db 变量中打开数据库的结果。这在后续会多处使用。
    db = DBOpenRequest.result;

    // 执行 displayData() 函数,使用 IDB 中已有的所有待办事项列表数据填充任务列表
    displayData();
  };

  // 当数据库需要创建新版本:以前未创建过该数据库,
  // 或者是通过上面的 window.indexedDB.open 提交了新版本号时,
  // 触发该事件处理程序
  DBOpenRequest.onupgradeneeded = function(event) {
    var db = event.target.result;

    db.onerror = function(event) {
      note.innerHTML += '<li>加载数据库出错。</li>';
    };

    // 使用 IDBDatabase.createObjectStore 为此数据库创建 objectStore
    var objectStore = db.createObjectStore("toDoList", { keyPath: "taskTitle" });

    // 定义 objectStore 将包含哪些数据项
    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>对象库已创建。</li>';
  };

下一行在数据库上打开一个事务,然后打开一个对象存储,然后我们可以操作其中的数据。

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

规范

规范 状态 备注
Indexed Database API
IDBDatabase 的定义
推荐 初始版本
Indexed Database API 2.0
IDBDatabase 的定义
编者的草案 -

桌面浏览器兼容性

特性ChromeEdgeFirefoxInternet ExplorerOperaSafari
基础支持

24

23 — 57 webkit

支持

16

10 — 16 moz

101157
Available in workers

支持

23 — 57 webkit

支持37 未知 支持 未知
name

24

23 — 24 webkit

12

16

10 — 16 moz

101157
objectStoreNames

24

23 — 24 webkit

12

16

10 — 16 moz

101157
onabort

24

23 — 24 webkit

12

16

10 — 16 moz

101157
onclose31 支持50 未知 支持10.1
onerror

24

23 — 24 webkit

12

16

10 — 16 moz

101157
onversionchange

24

23 — 24 webkit

未知

16

10 — 16 moz

101157
version

24

23 — 24 webkit

12

16

10 — 16 moz

101157
close

24

23 — 24 webkit

12

16

10 — 16 moz

101157
createObjectStore

24

23 — 24 webkit

12

16

10 — 16 moz

101157
deleteObjectStore

24

23 — 24 webkit

12

16

10 — 16 moz

101157
transaction

24

23 — 24 webkit

12

16

10 — 16 moz

101157

移动浏览器兼容性

特性AndroidChrome for AndroidEdge mobileFirefox for AndroidIE mobileOpera AndroidiOS Safari
基础支持

24

23 — 57 webkit

24

23 — 57 webkit

未知22 未知228
Available in workers

支持

23 — 57 webkit

支持

23 — 57 webkit

支持37 未知 支持 未知
name 支持 支持 支持22 未知228
objectStoreNames 支持 支持 支持22 未知228
onabort 支持 支持 支持22 未知228
onclose 支持 支持 支持50 未知 支持10.1
onerror 支持 支持 支持22 未知228
onversionchange 支持 支持 未知22 未知228
version 支持 支持 支持22 未知228
close 支持 支持 支持22 未知228
createObjectStore 支持 支持 支持22 未知228
deleteObjectStore 支持 支持 支持22 未知228
transaction 支持 支持 支持22 未知228

1. 部分的

相关链接