IndexedDB

来源:互联网 发布:淘宝店没流量怎么办 编辑:程序博客网 时间:2024/05/17 04:24

IndexedDB是Indexed DataBase的简写,译为索引数据库。I

window.indexedDB = window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB;window.IDBTransaction = window.IDBTransaction || window.webkitIDBTransaction || window.msIDBTransaction;window.IDBKeyRange = window.IDBKeyRange || window.webkitIDBKeyRange || window.msIDBKeyRange
//以兼容方式获取indexedDBwindow.indexedDB = window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB;//打开数据库var request = window.indexedDB.open(dbname,dbVersion);//dbname:数据库名称、dbVersion数据库版本//打开数据库成功触发的事件request.onsuccess = function(event){    //获取IndexedDB的IDBDatabase对象    var db = request.result;}//打开数据库失败触发的事件result.onerror = function(event) {    //失败执行的语句}//版本编号更改时触发的事件,数据结构发生改变就会更新版本编号,第一次创建数据库也会触发此事件。request.onupgradeneeded = function(evnet) {    var db = event.target.result;    //创建objectStore    var objectStore = db.createObjectStore(tbname,param);    objectStore.creatIndex(indexName, indexTarget, {unique: ture|false});}//初始化交易var transaction = db.transaction(objectStoreName, 操作权限);//获取objectStorestore = transaction.objectStore(tbname);//新增数据request = store.add(data);request.onsuccess = function(e){    //....}request.onerror = function(e) {    //....}//交易相关事件transaction.oncomplete = function(e){...}transaction.onerror = function(e){...}transaction.abort = function(e){...}//读取数据var request = store.get(key);request.onsuccess = function(event) {    //....}request.onerror = function(event) {    //....}//删除数据var request = store.delete(key);request.onsuccess = function(event) {    //....}request.onerror = function(event) {    //....}//清空数据store.clear();//删除数据库var request = window.indexedDB.deleteDatabase(dbName);request.onsuccess = function(event) {    //....}request.onerror = function(event) {    //....}//创建指针对象var index = store.index(keyword);var range = IDBKeyRange.bound();var order = IDBCursor.NEXT|PREV|NEXTUNIQUE|PREVUNIQUE;var request = index.openCursor(range, order);

补充:

IDBKeyRange对象有有几个方法:

  • lowerBound

    IDBKeyRange.lowerBound(x);  // >=x   IDBKeyRange.lowerBound(x,ture);  //>x
  • upperBound

    IDBKeyRange.upperBound(x); //<=xIDBkeyRange.upperBound(x, true); //<x
  • bound

    IDBKeyRange.bound(x,y); //>=x <=yIDBKeyRange.bound(x,y,ture,true); //>x <yIDBKeyRange.bound(x,y,ture,false);//>x <=yIDBKeyRange.bound(x,y,false,ture);//>=x <y
  • only

    IDBKeyRange.only(x);