html5操作indexedDB的方法

  介绍

小编给大家分享一下html5操作indexedDB的方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获、下面让我们一起去了解一下吧!

indexedDB是存储大量结构化数据的API,演示中用到的是异步API,麻烦的就是所有对indexedDB的操作都会发生一个异步的“请求”,只要熟悉了API操作起来也很简单。

大体流程是这样

1。打开数据库

var indexedDB=窗口。indexedDB | |窗口。webkitIndexedDB | | window.mozIndexedDB;      如果(& # 39;webkitIndexedDB& # 39;在窗口){   窗口。IDBTransaction=window.webkitIDBTransaction;   窗口。IDBKeyRange=window.webkitIDBKeyRange;   }//这个就不解释了      var=indexedDB.open请求(“adsageIDB");//打开:indexedDB只有这一个方法打开(数据库名)   请求。调用onsuccess=function (e){//异步   var v=?.00”;   var db=e.target.result;      如果(v !=db.version) {   var setVrequest=db.setVersion (v);   setVrequest。调用onsuccess=function (e){//异步   如果(db.objectStoreNames.contains (“todo")) {   db.deleteObjectStore (“todo");   }   var=db.createObjectStore存储(“todo" {keyPath:“adsid"});//onsuccess后创建ObjectStore暂时用到两个参数,数据库,和主键   }   }   }

这样就创建/连接了一个数据库

2。创建交互对象,,监听dom事件,,处理数据

然后就是要操作数据库了

//插入数据暂时只插入一列   var trans=db.transaction (“todo", IDBTransaction.READ_WRITE);//创建事务   var=trans.objectStore存储(“todo");//创建店//要操作数据必须建立事务和存储      var=https://www.yisu.com/zixun/{数据   “文本”:todoText,   “adsid”:新的日期().getTime ()   },//一个小数据adsid是主键      var=store.put请求(数据);//扒啃小安迦?      请求。调用onsuccess=function (e) {//成功后执行一些操作   };      请求。onerror=function (e) {   控制台。日志(“错误并补充道:“,e);   };//读取数据   var trans=db。事务((“备忘录”),IDBTransaction.READ_WRITE);   var=trans.objectStore存储(“备忘录”);      var keyRange=IDBKeyRange.lowerBound (0);   var cursorRequest=store.openCursor (keyRange);//这里用到指针游标,openCursor的参数keyRange是遍历范围还可以添加遍历方向参数//另一种方法是获得()这个就比较简单了直接store.get(“键值”)就行      cursorRequest。调用onsuccess=function (e) {   结果var=e.target.result;   如果(! !结果==false)   返回;      console.log (result.value);   result.continue ();//循环读取所有数据   };//删除数据   …   store.delete('键值”)   …         <>头   <>脚本   var indexedDB=窗口。indexedDB | |窗口。webkitIndexedDB | |   window.mozIndexedDB;      如果(“webkitIndexedDB”窗口){   windowwindow。IDBTransaction=window.webkitIDBTransaction;   windowwindow。IDBKeyRange=window.webkitIDBKeyRange;   }      adsageIDB={};   adsageIDB。db=零;      adsageIDB。onerror=function (e) {   console.log (e);   };      adsageIDB。打开=function () {   var=indexedDB.open请求(“adsageIDB”);      请求。调用onsuccess=function (e) {   var v=" 1.00 ";   adsageIDB。db=e.target.result;   var db=adsageIDB.db;      如果(v !=db.version) {   var setVrequest=db.setVersion (v);      setVrequest。onerror=adsageIDB.onerror;   setVrequest。调用onsuccess=function (e) {   如果(db.objectStoreNames.contains(“备忘录”)){   db.deleteObjectStore(“备忘录”);   }      var=db.createObjectStore(存储“待办事项”,   {keyPath: " adsid "});      adsageIDB.getAllTodoItems ();   };   }   其他{   adsageIDB.getAllTodoItems ();   }   };      请求。onerror=adsageIDB.onerror;   }      adsageIDB。addTodo=函数(todoText) {   var db=adsageIDB.db;   var trans=db。事务((“备忘录”),IDBTransaction.READ_WRITE);   var=trans.objectStore存储(“备忘录”);      var data={   “文本”:todoText,   “adsid”:新的日期().getTime ()   };      var=store.put请求(数据);      请求。调用onsuccess=function (e) {   adsageIDB.getAllTodoItems ();   };      请求。onerror=function (e) {   控制台。日志(“错误并补充道:“,e);   };   };      adsageIDB.deleteTodo=function (id) {   var db=adsageIDB.db;   var trans=db。事务((“备忘录”),IDBTransaction.READ_WRITE);   var=trans.objectStore存储(“备忘录”);      var=store.delete请求(id);      请求。调用onsuccess=function (e) {   adsageIDB.getAllTodoItems ();   };      请求。onerror=function (e) {   控制台。日志(“错误并补充道:“,e);   };   };      adsageIDB。getAllTodoItems=function () {   var todos=. getelementbyid(“待办事项”);   待办事项。innerHTML=" ";      var db=adsageIDB.db;   var trans=db。事务((“备忘录”),IDBTransaction.READ_WRITE);   var=trans.objectStore存储(“备忘录”);      var keyRange=IDBKeyRange.lowerBound (0);   var cursorRequest=store.openCursor (keyRange);      cursorRequest。调用onsuccess=function (e) {   结果var=e.target.result;   如果(! !结果==false)   返回;      renderTodo (result.value);   result.continue ();   };      cursorRequest。onerror=adsageIDB.onerror;   };      函数renderTodo(行){   var todos=. getelementbyid(“待办事项”);   李var=document.createElement(“李”);   var=document.createElement (“a”);   var t=document.createTextNode (row.text);      一个。addEventListener(“点击”,函数(){   adsageIDB.deleteTodo (row.adsid);   },假);      一个。textContent=吧境齗”;   li.appendChild (t);   li.appendChild(一个);   todos.appendChild(李)   }      函数addTodo () {   var todo=. getelementbyid(“备忘录”);   adsageIDB.addTodo (todo.value);   待办事项。值=" ";   }      init()函数{   adsageIDB.open ();   }      窗口。addEventListener (“DOMContentLoaded”内,init,假);>

html5操作indexedDB的方法