zoukankan      html  css  js  c++  java
  • html5(八) IndexedDB

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

    }

          

  • 相关阅读:
    新浪微盘又是一个给力的产品啊,
    InfoQ: 百度数据库架构演变与设计
    列式数据库——Sybase IQ
    MapR初体验 淘宝共享数据平台 tbdata.org
    IBM正式发布新一代zEnterprise大型机(组图) 大型机,IBM,BladeCenter,美国,纽约 TechWeb News
    1TB is equal to the number of how many GB? 1PB equal to is equal to the number of TB? 1EB PB? | PCfault.com
    Cassandra vs HBase | WhyNosql
    The Hadoop Community Effect
    雅虎剥离开源软件平台 Hadoop ,与风投新建 Hortonworks 公司 品味雅虎
    RowOriented Database 、ColumnOriented Database 、KeyValue Store Database 、DocumentOriented Database
  • 原文地址:https://www.cnblogs.com/lengp/p/4276864.html
Copyright © 2011-2022 走看看