小编给大家分享一下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数据库怎么用