如何在HTML5中使用indexedDB数据库

  介绍

如何在HTML5中使用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;);   ,,,}   }

db。交易方法接收两个参数,第一个参数可以是字符串或数组,字符串时则是一个对象仓库名,数组时则是由对象仓库名组成的数组,事务可以对参数中任何一个对象仓库进行操作第。二个参数为事务模式,传入只读的时只能对对象仓库进行读操作,无法写操作。可以传入读写进行读写操作。

如何在HTML5中使用indexedDB数据库