bluetears 2014-12-12
先贴上两个参考链接:谷歌开发者社区IndexedDB、javascript标准参考教程
因为IndexedDB现在还处于实验阶段,API不是很丰富的同时,各个浏览器的支持也不尽相同。笔者建议,在localStorge能满足需求的情况下,就没必要非要整IndexedDB了。笔者也只是闲来无事,瞎捯饬玩儿罢了。
详细的说明及概述这里就不啰嗦了。参考前面提供的两个链接。你会知道更多。
var conn=indexedDB.open('test');
var conn=indexedDB.open('test',1);//版本号必须是大于0的整数,默认为0数据库打开后,会触发四个事件
这里只要说说第一个事件,因为要在这个事件里创建数据库中的“对象仓库“(就相当于,我们要在test数据库中创建表)。之所以要在这里创建。是因为IndexedDB中对数据库的操作(添加、删除“对象仓库”,创建索引等)都要在回调中执行。
conn.onupgradeneeded = function(e) {
console.log("第一次打开该数据库,或者数据库版本发生变化。");
var db=e.target.result;
if(!db.objectStoreNames.contains("firstOS")) {
db.createObjectStore("firstOS");//创建数据“firstOS”对象仓库
}
console.log('创建成功!firstOS')
} 对象仓库创建成功后,开始往里面放数据吧。这次我们在onsuccess回调中开启事务,并添加数据
open.onsuccess = function(e) {
console.log("数据库打开成功!");
db = e.target.result;
var t = db.transaction(["firstOS"],"readwrite");//同时设置访问类型为 读写
t.onabort=function(e){
console.log('事务中断!')
}
t.oncomplete=function(e){
console.log('事务完成')
}
t.onerror=function(e){
console.log('事务开启失败!')
console.dir(e);
}
var store = t.objectStore("firstOS");
var data={'p':123}
var req=store.add(data,1);
req.onerror=function(e){
console.log('添加数据失败!')
}
req.onsuccess =function(e){
console.log('数据添加成功!')
var cursor=e.target.transaction.objectStore('firstOS').openCursor();
cursor.onsuccess = function(e) {
var res = e.target.result;
if(res) {
console.log("Key", res.key);
console.log("Data", res.value);
res.continue();
}
}
}
} 至此,使用indexedDB添加数据就完成了。对于更新、删除等API。参考链接中都有。尽情研究,尽情玩耍吧!
哦 对了。整个过程 我是在火狐浏览器整的。别的浏览器没试过。