IndexedDB

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
//以兼容方式获取indexedDB
window.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, 操作权限);
//获取objectStore
store = 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); //<=x
    IDBkeyRange.upperBound(x, true); //<x
  • bound

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

    IDBKeyRange.only(x);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值