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

}

      

转载于:https://www.cnblogs.com/lengp/p/4276864.html

html5(八) IndexedDB相关推荐

  1. html5 初试 indexedDB

    indexedDB是存储大量结构化数据的API,demo中用到的是异步API,麻烦的就是所有对indexedDB的操作都会发生一个异步的'请求',只要熟悉了API操作起来也很简单. 大体流程是这样 1 ...

  2. html5 indexeddb 排序,html5 – 在IndexedDB中,有没有办法进行排序复合查询?

    本回答中使用的术语"复合查询"是指在其WHERE子句中涉及多个条件的SQL SELECT语句.虽然indexedDB规范中没有提到这样的查询,但您可以通过创建一个包含一组属性名称的 ...

  3. html5indexeddb排序,html5的indexedDB数据库操作实例

    效果: 代码: StringUtil.js //去除字符串中间空格 String.prototype.Trim = function() { return this.replace(/(^s*)|(s ...

  4. HTML5的IndexedDB数据库

  5. 分享Silverlight/WPF/Windows Phone/HTML5一周学习导读(1月16日-2月5日)

    分享Silverlight/WPF/Windows Phone/HTML5一周学习导读(1月16日-2月5日) 本周Silverlight学习资源更新 WIn2003部署Silverlight coo ...

  6. 前端一班:HTML5当天学习总结-摘抄张果博客园

    一.初步了解HTML5,相关涉及技术以及行业前景 二.HTML5特性 HTML5 八个特性类别对应的8个Logo 语义化.离线&存储.设备访问.通信 多媒体.图形和特效.性能和集成.呈现(CS ...

  7. HTML5(九)——超强的 SVG 动画

    SVG 动画有很多种实现方法,也有很大SVG动画库,现在我们就来介绍 svg动画实现方法都有哪些? 一.SVG 的 animation SVG animation 有五大元素,他们控制着各种不同类型的 ...

  8. 什么是React为什么使用React什么时候使用React

    什么是React? (What is React?) React.js often referred to as React or ReactJS is a JavaScript library re ...

  9. tp5 自动加上html,【TP5.1】HTML标签自动转义,导致CKEditor保存内容无法正常显示!...

    问题:使用Thinkphp5.1 开发的时候显示CKEditor保存的内容不符合预期. 希望的样子,肯定是不显示 等标签,而是下面的样子. 因为刚开始使用TP5.1和CKEditor,所以遇到问题有点 ...

  10. 【电脑运用及修理】Mozilla Firefox 浏览器

    Firefox 浏览器 Firefox 浏览器,中文名"火狐浏览器",是来自 Mozilla 的一款免费的开源 web 浏览器. Firefox 发布于 2004 年,也是当今最流 ...

最新文章

  1. c语言逻辑运算类指令,组成原理第二章——计算机指令
  2. E-mail Composition and Decoding
  3. [Xcode 实际操作]四、常用控件-(15)MKMapView加载简单视图
  4. 用AJAX实现无刷新的分页
  5. 关于li标签之间的间隔如何消除!
  6. 定义物料管理的容差范围
  7. Linux MySQL5.5的安装
  8. 四川一级计算机课程编码,四川省计算机一级考试真题
  9. Linux 下安装python软件包(pip、nose、virtualenv、distribute )
  10. 运维祈求不宕机_[国庆特辑] 程序员应该求谁保佑才能保证不宕机?
  11. 一个 react+redux 工程实例
  12. 【Python数据挖掘】回归模型与应用
  13. Scrapy爬虫代理IP的使用
  14. 作为一名Java开发工程师需要掌握哪些专业技能
  15. 企业微信如何建立部门?企业成员怎么加入部门?
  16. 中国五矿集团有限公司采购电子商务平台
  17. 2022-2028全球与中国多功能烤箱市场现状及未来发展趋势
  18. 通过npm运行管理端界面并解决npm install安装报错
  19. GAE 博客——B3log Solo 0.2.1 发布了!
  20. 位与:一个数1的结果

热门文章

  1. 怎样理解“道不同,不相为谋”这句话呢。。。
  2. ROS学习笔记10(创建一个ROS消息和服务)
  3. java selenium_关于selenium的介绍
  4. Varnish——CDN加速实现(单个后端服务器、缓存命中率情况)
  5. oracle delphi唱盘,经典再升级 Oracle Delphi MK VI Gen 2
  6. 萌新的Python练习实例100例(三)一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数
  7. Java阶段2-02JS:07JS中的事件
  8. java系列2:方法的重载
  9. 斯诺登NFT作品拍得者PleasrDAO将继续收藏NFT艺术品
  10. 今日恐慌与贪婪指数为72 贪婪程度与昨日持平