前言:因为项目的一些要求,所有的开发都是基于firefox5浏览器的,所以以下的总结都是基于firefox5而来。
1.1. IndexedDB是索引型数据库,(同步未实现)现支持异步操作。使用时不能将浏览器设为隐私模式。
1.2. IndexedDB可以存储任意格式的json object,而localStorage则只能存string
1.3. IndexedDB数据库不同的源直接通过域名进行识别;不同的数据库,不同的表通过一个字符串(name)识别;表(ObjectStore)中识别不同的json对象,即key;1.键值对(一个key对应一个value)2.键路径(keypath对应表名.字段名)。
1.4. IDB不允许数据库中的表在同一个版本中发生变化(创建新表或删除旧表的时候,必须使用一个不一样的版本号)。
1.5. createObjectStore第一个参数是表的名称,第二个参数是可选的,是否需要自动增长。对表中数据的存取通常是在onsuccess事件之后进行的。
1.6. IDBKeyRange和store.openCursor
是用来遍历列表的,前者确定遍历的范围,后者根据前者的范围逐条触发onsuccess
事件
1.7. 由于内核不同,所以window.indexedDB
被改为了带有前缀的变量
1.8. IndexedDB的基本操作如下所示:
1.打开一个数据库和启动一个事务.
2.创建一个存储对象.
3.向数据库请求一些数据操作, 例如添加或者检索数据.
4.监听DOM事件来完成一些操作。
5.对结果集进行一些处理 (结果能通过请求对象获得).
1.9. 代码案例
连接数据库:
还可以指定数据库的版本号,如果数据库不是最新的,在这种情况下,后台就会自动触发onupgradeneeded事件,该事件里的一个CHANGE_VERSION事务允许你出处理存储的对象
成功和失败的回调函数:
异常处理在数据库对象上监听异常事件:
onupgradeneeded 处理函数是唯一个地方允许你修改数据库的结构和设计。在里面,你可以新建和删除存储的对象并可设置和移除指数
添加和移除数据,对新建的数据库进行任何操作之前,你需要开启一个事务,该事务来自数据对象,并且你必须为你想要操作的存储对象指定一个事务类型涉及到哪些存储对象。同时,你也要决定你是想要修改数据库还是只是需要读取数据。transaction()三个参数,第一个参数是存储对象的一个数组,第二个参数设置属性,(默认只读事务。写入,用READ_WRITE标识符)。
事务监听3种不同类型的DOM事件:error(异常),abort(中止)和complete(完成)。
对数据库中的数据进行操作
游标的使用,存储对象存储的所有记录一条一条读出来的话,类似遍历(游标与索引结合使用,读取数据的顺序(升序、降序)和指定范围)
参考网址:http://blackstone.blog.51cto.com/1282172/817757
http://bulaoge.net/user.blg?dmn=g3g4&cid=0&pg=2
https://developer.mozilla.org/en-US/docs/IndexedDB/Basic_Concepts_Behind_IndexedDB