IndexedDB 是一个数据库系统,它在用户的计算机上存储索引信息。

IndexedDB与传统的数据库不同。在IndexedDB中,数据库中的信息以对象的形式存储在对象库表中。对象库没有特定的结构,只能够找到其中对象的索引和名称。这些对象也没有既定的结构,每个对象的结构可以各不相同。这有点类似NoSQL DB

      window.indexedDB.open(数据库名, 版本号);

version属性——返回当前的版本值
setVersion()方法——给使用中的数据库分配一个新版本值。(可以是数字,也可以是字符)

createObjectStore(name,keyPath,autoIncrement)——这个方法用属性制定的名称和配置集合来创建一个对象库。
              name必须的,keyPath属性用来生命每个对象的公共索引。autoIncrement属性是个bool值,用来指定对象库是否拥有一个键生成器。
objectStore(name)——要访问对象库中的对象,必须启动一个事务,并未这个事物打开对象库。

deleteObjectStore(name)——删除name属性名的对象库。

只有在创建数据库或者将数据库升级为新版本的时候,才能应用createObjectStore。deleteObjectStore 方法,以及负责数据库配置的其他方法。

索引

  要在对象库中寻找对象,需要将这些对象的某些属性设置为索引。

  一 可以在创建的时候设置索引 createObjectStore(name,keyPath,autoIncrement)

  二 createIndex(name,properly,unique)——这个方法为指定对象创建索引。name:对象名。property:属性名 unique:是个布尔值,代表是否存在两个或多个对象共享同一索引值的可能。

  index(name)——要使用的索引,必须县创建索引的引用,然后再将这个引用分配给事物。

  deleteIndex(name)——删除索引

事务

  操作必须通过事务来实现:生成事务方法——transaction()

    事务属性:READ_ONLY:只读  READ_WRITE:读写  VERSION_CHANGE:修改版本

对象库的方法

add(object)——添加对象。如果对象中已经存在与索引相同的对象,则返回错误。

put(object)——修改对象。在对象库中已经存在与索引相同的对时,会覆盖与索引相同的对象。

get(key)——获取指定对象。key索引。

delete(key)——删除对象。

打开数据库

indexedDB属性和open()方法讲打开指定名称的数据库,如果数据库不存在,则用指定名称创建一个数据库。

window.indexedDB=window.webkitIndexedDB || window.mozIndexedDB;

var request = indexedDB.open('mydatabase');

request.addEventListener('error',showerror,false);

request.addEventListener('success',start,false);

function showerror(e){

  alert(e.code+e.message);

}

function start(e)

{

  db=e.result || e.target.result;

  if(db.version==''){

    var request = db.setVersion('1.0');

request.addEventListener('error',showerror,false);

    request.addEventListener('success',createdb,false);

  }

}

function createdb(){

  var objectstore=db.createObjectStore('movies',{keyPath:'id'});

  objectstore.createIndex('SearchYear','date',{unique:false});

}

API处理完数据库请求之后,会触发error,success事件。

添加对象

function addobject(){

  var keywork="";

  var title="";

  var year="";

  var transaction=db.transaction(['movies'],IDBTransaction.READ_WRITE);

  var objectstore=transaction.objectStore('movies');

  var request=objectstore.add({id:kework,name:title,date:year});

  request.addEventListener('success',function(){ show(keywork)},false);

}

获取对象

function show(keyword){

  var transaction = db.transactioin(['movies']);

  var objectstore=transaction.objectStore('movies');

  var request = objectstore.get(keywork);

  request.addEventListener('success',showlist,false);

}

function showlist(e){

  var result = e.result || e.target.result;

  alert(result.id + result.name + result.date);

}

      

html5(八) IndexedDB的更多相关文章

  1. HTML5之indexedDB

    从陌生到了解,花了一下午的时间,以下的地址还是不错的参考资料,省的到处去找 HTML5本地存储——IndexedDB(一:基本使用) 官方API接口文档 官方使用示例 html5 初试 indexed ...

  2. html5 初试 indexedDB

    indexedDB是存储大量结构化数据的API,demo中用到的是异步API,麻烦的就是所有对indexedDB的操作都会发生一个异步的‘请求’,只要熟悉了API操作起来也很简单. http://ww ...

  3. HTML5之IndexedDB使用详解

    随着firefox4正式版的推出,IndexedDB正式进入我们的视线.IndexedDB是HTML5-WebStorage的重要一环,是一种轻量级NOSQL数据库.相较之下,WebDataBase标 ...

  4. 使用 HTML5 的 IndexedDB API

    1. [代码]判断是否支持 IndexedDB     var indexedDB = window.indexedDB || window.webkitIndexedDB || window.moz ...

  5. HTML5 学习总结(一)——HTML5概要与新增标签

    一.HTML5概要 1.1.为什么需要HTML5 HTML4陈旧不能满足日益发展的互联网需要,特别是移动互联网.为了增强浏览器功能Flash被广泛使用,但安全与稳定堪忧,不适合在移动端使用(耗电.触摸 ...

  6. HTML5 学习笔记(一)——HTML5概要与新增标签

    目录 一.HTML5概要 1.1.为什么需要HTML5 1.2.什么是HTML5 1.3.HTML5现状及浏览器支持 1.4.HTML5特性 1.5.HTML5优点与缺点 1.5.1.优点 1.5.2 ...

  7. HTML5 学习笔记--------》HTML5概要与新增标签!

      一.HTML5概要 1.1.为什么需要HTML5 HTML4陈旧不能满足日益发展的互联网需要,特别是移动互联网.为了增强浏览器功能Flash被广泛使用,但安全与稳定堪忧,不适合在移动端使用(耗电. ...

  8. IndexedDB参考资料网址

    IndexedDB:浏览器里内置的数据库, Web骇客 http://www.webhek.com/indexeddb/ 前端的数据库:IndexedDB入门(很全面) http://web.jobb ...

  9. JavaScript的客户端存储

    一.前言: 客户端存储实际上就是Web浏览器的记忆功能,通过浏览器的API实现数据存储到硬盘: 二.存储的不同形式: 1.Web存储:localStorage 和 sessionStorage 代表同 ...

  10. 浏览器相关--H5本地存储

    因为项目需要,最近研究了一下HTML5本地存储相关的东西,在这简单的记录一下. 浏览器存储主要包括一下几个部分1. cookie2. localStorage3. sessionStorage4. i ...

随机推荐

  1. [Python] Print input and output in table

    Print the input and output in a table using prettyTable. from prettytable import PrettyTable import ...

  2. 使用msf对tomcat测试

    1.1 使用nmap命令对目标主机进行扫描.单击桌面空白处,右键菜单选择"在终端中打开". 1.2 在终端中输入命令"nmap –sV 192.168.1.3" ...

  3. Hibernate映射数据库中longtext类型属性时报错No Dialect mapping for JDBC type: -1的解决方案

    出现错误的原因是:hibernate中对于数据库的longtext数据类型不支持. 解决方案: 1.写个类集成方言,然后自己实现对longtext的支持 import java.sql.Types; ...

  4. laravel自定义验证

    1.在控制器中直接写验证$this->validate($request, [ 'video_ids' => [ function($attribute, $value, $fail) { ...

  5. Django框架详细介绍---ORM---图书信息系统专题训练

    from django.db import models # Create your models here. # 书 class Book(models.Model): title = models ...

  6. Substring (后缀数组 + 计数)

    题意:求出字符串中包含了某个字符的字符序列不一样的数量. 思路:其实主要的是找出每个被包含字符的数量,假设除了目标字符之外的所有字符都不一样,那么应该就很好求了,但是显然不可能,所以我们可以枚举每一个 ...

  7. 怎样才能提交一个让开发人员拍手叫好的bug单

    怎样才能提交一个让开发人员拍手叫好的bug单 软件测试人员写得最多的文档就是测试用例和BUG,现在测试用例和BUG都没有标准的模板,每个公司使用的缺陷管理工具都有可能不一样,如果你换了一家公司就有可能 ...

  8. Kubernetes有状态应用管理——PetSet

    目录贴:Kubernetes学习系列 1.介绍 在Kubernetes中,大多数的Pod管理都是基于无状态.一次性的理念.例如Replication Controller,它只是简单的保证可提供服务的 ...

  9. Vue单元测试Karma+Mocha

    Vue单元测试Karma+Mocha Karma是一个基于Node.js的JavaScript测试执行过程管理工具(Test Runner).该工具在Vue中的主要作用是将项目运行在各种主流Web浏览 ...

  10. UUID简介

    UUID简介如下:1.简介UUID含义是通用唯一识别码 (Universally Unique Identifier),这 是一个软件建构的标准,也是被开源软件基金会 (Open Software F ...