美文网首页
关于indexedDB的学习

关于indexedDB的学习

作者: 天天开心的花花 | 来源:发表于2018-03-06 18:38 被阅读0次

    相关对象

    IDBFactory

    作用:用于创建或打开数据库,并管理数据库的版本

    获取方式:var IDBFactory =window.indexedDB

    IDBOpenDBRequest

    作用:为请求对象,而对数据库的访问、操作都是基于请求的

    获取方式:var IDBOpenDBRequest = window.indexedDB.open(name,version)

    IDBDatabase

    作用:为真正的数据库对象,封装了对数据库表的创建、编辑等功能

    获取方式:基于请求对象IDBOpenDBRequest,当IDBOpenDBRequest申请成功时,该对象的result属性就是IDBDatabase数据库对象。

    IDBOpenDBRequest.onsuccess= function (e){

        var IDBDatabase =IDBOpenDBRequest.result;

        //或者

        var IDBDatabase =e.target.result;

    }

    关闭数据库:调用IDBDatabase对象的close()方法

    IDBDatabase.close();

    删除数据库:调用indexedDB对象的deleteDatabase方法

    indexedDB.deleteDatabase(name);

    IDBObjectStore

    作用:相当于一张表,里面存储的每条数据和一个键相关联

    初始化方式:在创建数据库的时候初始化IDBObjectStore,即在IDBOpenDBRequest. Onupgradeneeded事件中。

    IDBOpenDBRequest.onupgradeneeded= function(e){

        var db = e.target.result;

        if(!db.objectStoreNames.contains('students')){

            db.createObjectStore('students',{keyPath:"id"});

        }

    console.log('DB version changedto ' + version);

    };

    获取方式:需要通过事务获取

    var transaction=db.transaction(['students']); 

    var objectStore=transaction.objectStore('students');

    添加数据:通过IDBObjectStore对象的add方法添加

    objectStore.add({

        id:1001,

        name:'huahua',

        age:25

    })

    获取数据:通过IDBObjectStore对象的get方法通过键获取数据

    function getDataByKey(db,storeName,value){

        var transaction =db.transaction(storeName,'readwrite');

        var store =transaction.objectStore(storeName);

        var request = store.get(value);

        request.onsuccess = function(e){

            var student = e.target.result;

            console.log(student.age);

        }

    }

    删除数据:通过IDBObjectStore对象的delete方法根据键值删除数据

    function deleteDataByKey(db,storeName,value){

        vartransaction = db.transaction(storeName,'readwrite');

        var store =transaction.objectStore(storeName);

        store.delete(value);

    }

    清空数据:通过IDBObjectStore对象的clear方法清除数据

    function clearObjectStore(db,storeName) {

        var transaction = db.transaction(storeName,'readwrite');

        var store =transaction.objectStore(storeName);

        store.clear();

    }

    所有代码如下:

    var iDBFactory = window.indexedDB;

    var iDBOpenDBRequest = window.indexedDB.open('student',1);

    iDBOpenDBRequest.onsuccess = function(){

        var iDBDatabase = iDBOpenDBRequest.result;

        var transaction = iDBDatabase.transaction(['student'],'readwrite');

        var objectStore = transaction.objectStore('student');

        objectStore.add({

            id: 1001,

            name: 'huahua',

            age: 25

        });

        getDataByKey(iDBDatabase,'student',1001);

    };

    iDBOpenDBRequest.onerror = function(){

    };

    iDBOpenDBRequest.onupgradeneeded = function(e){

        var db = e.target.result;

        if(!db.objectStoreNames.contains('student')) {

            db.createObjectStore('student',{

                keyPath: 'id'

            });

        }

    };

    function getDataByKey(db, storeName, value){

        var transaction = db.transaction(storeName, 'readwrite');

        var store = transaction.objectStore(storeName);

        var request = store.get(value);

        request.onsuccess = function(e) {

            var student = e.target.result;

            console.log(student.age);

        }

    }

    function deleteDataByKey(db, storeName, value){

        var transaction = db.transaction(storeName, 'readwrite');

        var store = transaction.objectStore(storeName);

        store.delete(value);

    }

    function clearObjectStore(db,storeName) {

        var transaction = db.transaction(storeName,'readwrite');

        var store = transaction.objectStore(storeName);

        store.clear();

    }

    相关文章

      网友评论

          本文标题:关于indexedDB的学习

          本文链接:https://www.haomeiwen.com/subject/crprfftx.html