概念
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; //获得对象大约数量
参考:
《HTML5精粹》