indexeddb数据库怎么用

  介绍

小编给大家分享一下indexeddb数据库怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获、下面让我们一起去了解一下吧!

<强>前言

在HTML5的本地存储中,有一种叫indexeddb的数据库,该数据库是一种存储在客户端本地的NoSQL数据库,它可以存储大量的数据。从上篇:HTML5进阶系列:网络存储,我们知道网络存储可以方便灵活的在本地存取简单数据,但是对于大量结构化存储,indexeddb的优势就更加明显。接下来我们来看看indexeddb如何存储数据。

<强>连接数据库

一个网站可以有多个indexeddb数据库,但每个数据库的名称是唯一的。我们需要通过数据库名来连接某个具体的数据库。

var  request =, indexedDB.open (& # 39; dbname # 39;,, 1),,,//,打开,dbName 数据库   时间=request.onerror 函数(e){,,,,,,,,,,,,,//,监听连接数据库失败时执行   ,,,console.log(& # 39;连接数据库失败& # 39;);   }   时间=request.onsuccess 函数(e){,,,,,,,,,,,//,监听连接数据库成功时执行   ,,,console.log(& # 39;连接数据库成功& # 39;);   }

我们使用indexedDB。开放的方法来连接数据库,该方法接收两个参数,第一个是数据库名,第二个是数据库版本号。该方法会返回一个IDBOpenDBRequest对象,代表一个请求连接数据库的请求对象。我们可以通过监听请求对象的> var  request =, indexedDB.open (& # 39; dbname # 39;,, 2),,,//,更新版本,打开版本为2的数据库//,…   时间=request.onupgradeneeded 函数(e) {   ,,,console.log(& # 39;新数据库版本号为=& # 39;,+,e.newVersion);   }

我们通过监听请求对象的> var  request =, indexedDB.open (& # 39; dbname # 39;,, 2);//,…   时间=request.onsuccess 函数(e) {   ,,,console.log(& # 39;连接数据库成功& # 39;);   ,,,var  db =, e.target.result;   ,,,db.close ();   ,,,console.log(& # 39;数据库已关闭& # 39;);   }

<>强删除数据库

indexedDB.deleteDatabase (& # 39; dbname # 39;);   console.log(& # 39;数据库已删除& # 39;);

<强>创建对象仓库

对象存储(对象仓库)是indexedDB数据库的基础,在indexedDB中并没有数据库表,而对象仓库,就是相当于一个数据库表。

var  request =, indexedDB.open (& # 39; dbname # 39;,, 3);//,…   时间=request.onupgradeneeded 函数(e) {   ,,,var  db =, e.target.result;   ,,,var  store =, db.createObjectStore(& # 39;用户# 39;,,{keyPath: & # 39; userid # 39;,,自动增量:,假});   ,,,console.log(& # 39;创建对象仓库成功& # 39;);   }

db。createObjectStore方法接收两个参数,第一个为对象仓库名,第二个参数为可选参数,值为一个js对象。该对象中的keyPath属性为主键,相当于数据库表中标识为主键.autoIncrement属性为假,则表示主键值不自增、添加数据时需指定主键值。

注意:在数据库中,对象仓库名不可重复,否则浏览器会报错。

<强>创建索引

indexedDB数据库中通过数据对象的某个属性来创建索引,在数据库中进行检索时,只能通过被设为索引的属性进行检索。

var  request =, indexedDB.open (& # 39; dbname # 39;,, 4);//,…   时间=request.onupgradeneeded 函数(e) {   ,,,var  db =, e.target.result;   ,,,var  store =, db.createObjectStore (& # 39; newUsers& # 39;,, {keyPath: & # 39; userid # 39;,,自动增量:,假});   ,,,var  idx =, store.createIndex (& # 39; usernameIndex& # 39; & # 39;用户名# 39;,{独特:假})   ,,,console.log(& # 39;创建索引成功& # 39;);   }

商店。方法createIndex方法接收三个参数,第一个为索引名,第二个为数据对象的属性,上例中使用的用户名属性来创建索引,第三个参数为可选参数,值为一个js对象。该对象中独特的属性为真的,代表索引值不可以相同,即两条数据的用户名不可以相同,为假则可以相同。

<>强基于事务

在indexedDB中,所有数据操作都只能在事务中执行。连接数据库成功后,可以使用IDBOpenDBRequest对象的交易方法开启只读事务或读写事务。

var  request =, indexedDB.open (& # 39; dbname # 39;,, 5);//,…   时间=request.onupgradeneeded 函数(e) {   ,,,var  db =, e.target.result;   ,,,var  tx =, db.transaction(& # 39;用户# 39;& # 39;只读的# 39;);   ,,,tx.oncomplete =,函数(e) {   ,,,,,,,console.log(& # 39;事务结束了& # 39;);   ,,,}   ,,,tx.onabort =,函数(e) {   ,,,,,,,console.log(& # 39;事务被中止了& # 39;);   ,,,}   }

indexeddb数据库怎么用