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);