API - IndexedDB

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/caishu1995/article/details/80272041
概念
    1、键值对的形式,值可以是复杂类型
    2、简历在事务数据库模型上
    3、清除浏览器缓存的时候,可能会被清除相关的数据哦

---------------------------------------------------------
---------------------------------------------------------
1、数据库
2、版本
3、事务
4、对象库
5、索引
6、游标
---------------------------------------------------------
---------------------------------------------------------

1、数据库
    打开
//dbName : 数据库的名称
//version: 版本号
var request = indexedDB.open(dbName);
var request = indexedDB.open(dbName, version);
        indexedDB应该是个全局变量,系统自定义的不需要我们初始化!
     由于request是个异步操作,所以我们需要顺便个回调函数
var request = indexedDB.open(dbName);
request.onerror = function(event) {// 错误处理程序 };
request.onupgradeneeded = function(event) {
    var db = event.target.result;
    //。。。
}

2、版本
var version = db.version; //返回当前版本号

var request = db.setVersion('1.0'); //给使用中的数据库分配一个新版本值
        由于request是个异步操作,所以我们需要顺便个回调函数
var request = db.setVersion('1.0');
request.addEventListener("error", function(event) { }, false);
request.addEventListener("success", function(event) { }, false);


3、事务

//AA:需要关联的存储空间
//way可以是以下的值
//IDBTransaction.READ_ONLY  只读  readOnly
//IDBTransaction.READ_WRITE 读写  readwrite
//IDBTransaction.VERSION_CHANGE 改变版本 versionchange
var transaction = db.transaction(['AA']);
var transaction = db.transaction(['AA'], way);

4、对象库
     对象的唯一要求是至少包含一个生命为索引的属性
    创建对象库
//name         :对象库名称
//keyPath      :声明每个对象的公共索引【类似主键】
//autoIncrement:bool类型的,用来指定是否拥有键生成器
var objectStore = db.createObjectStore(name, { keyPath: "ssn" }, autoIncrement);
var objectStore = db.createObjectStore(name, { keyPath: "ssn" });

//name:对象库名称
var objectStore = transaction.objectStore(name); //访问对象库

//name:对象库名称
transaction.deleteObjectStore(name); //删除对象库


var list[] = transaction.objectStoreNames; //获得已打开数据库中对象库的名称列表

var dbName = objectStore.name; //获得对象库的名称

//myIndex在索引那里找
var keyPath = objectStore.keyPath; //获得对象库使用的keyPath
   对象
//obj :键值对组合 / 包含多个键值对的对象
var request = objectStore.add(obj);//如果存在索引相同的对象,则返回错误

//obj :键值对组合 / 包含多个键值对的对象
var request = objectStore.put(obj);//如果存在索引相同的对象,则覆盖

//key:索引
var request = objectStore.get(key); //获得对象

//key:索引
var request = objectStore.delete(key); //删除对象
        由于request是个异步操作,所以我们需要顺便绑个回调函数
var request = objectStore.get(key);
request.addEventListener("success", function(event) { 
    var result = event.result || event.target.result;
    alert(reult.id);
}, false);

5、索引
//name     :索引名称
//property :用来做索引的属性
//unique   :bool类型,判断是否唯一
objectStore.createIndex(name, property, {unique: true});//创建

//name     :索引名称
var myIndex = objectStore.index(name);//使用索引

//name     :索引名称
objectStore.deleteIndex(name, property, {unique: true});//删除

var myindexNames = objectStore.indexNames; //获得对象库的索引名称列表

6、游标
//scope 选择的对象范围
//    IDBKeyRange.only(value); 查找关键字与value对应的对象
//    IDBKeyRange.bound(lower, upper, lowerOpen, upperOpen);从lower 到 upper ,是否包含最低值、最高值
//    IDBKeyRange.lowerBound(value, open);最低值为lower,是否包含最低值
//    IDBKeyRange.upperBound(value, open);最高值为upper,是否包含最高值
//type  返回的顺序
//    NEXT               升序
//    NEXT_NO_DUPLICATE  升序并去重
//    PREV               降序
//    PREV_NO_DUPLICATE  降序并去重
var newCursor = objectStore.openCursor(scope, type); //生成游标
newCursor.addEventListener("success", function (e){
    var cursor = e.result || e.target.result;
}, false);
cursor.continue(); //游标向前移动一个位置

cursor.delete(); //删除当前位置上的对象

cursor.update(value); //更新对象的内容
    获得游标的信息
var key = cursor.key; //获得对象关键字的值
var content = cursor.value.属性名; //获得对象属性的值
var content = cursor.direction; //当前方向。升序或降序读取对象
var content = cursor.count; //获得对象大约数量

参考:
     MDN IndexedDE
    《HTML5精粹》

猜你喜欢

转载自blog.csdn.net/caishu1995/article/details/80272041
今日推荐