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

    }

          

  • 相关阅读:
    Spark Interaction(特征交互-笛卡尔转换)
    Spark DCT 离散余弦变换
    Spark polynomialExpansion 多项式扩展
    Spark PCA
    Spark n-gram模型
    Spark OneHotEncoder
    Spark 逻辑回归LogisticRegression
    查看macOS下正在使用的zsh
    Neovim中NERDTree等多处cursorline不高亮
    让pip使用python3而不是python2
  • 原文地址:https://www.cnblogs.com/lengp/p/4276864.html
Copyright © 2011-2022 走看看