indexDB操做(部分方法不太會使用)

<script type="text/javascript">
    //打開數據庫
    function openDB(name,version){
        var version = version || 1;
        var request = window.indexedDB.open(name,version);
        request.onerror = function(e){
            console.log(e.currentTarget.error.message);    
        };
        request.onsuccess = function(e){
            myDB.db = e.target.result;    
        };
        request.onupgradeneeded = function(e){
            var db=e.target.result;
            if(!db.objectStoreNames.contains('students')){
                //db.createObjectStore('students',{keyPath:"id"});//以id爲鍵存儲數據 相似關聯數組
                //db.createObjectStore('students',{autoIncrement: true});//以自增數值爲鍵 相似索引數組
                
                //建立索引
                var store=db.createObjectStore('students',{keyPath: 'id'});
                store.createIndex('nameIndex','name',{unique:true}); 
                store.createIndex('ageIndex','age',{unique:false});
            }
            console.log('DB version changed to ' + version);
        };
    }
    //插入數據
    function addData(db,storeName){
        var transaction=db.transaction(storeName,'readwrite'); 
        var store=transaction.objectStore(storeName); 

        for(var i=0;i<students.length;i++){
            store.add(students[i]);
        }
    }
    //查找數據
    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.name); 
        };
    }
    //利用索引查找數據
    function getDataByIndex(db,storeName){
        var transaction=db.transaction(storeName);
        var store=transaction.objectStore(storeName);
        var index = store.index("nameIndex");
        index.get('Byron').onsuccess=function(e){
            var student=e.target.result;
            console.log(student.id);
        }
    }
    //更新數據
    function updateDataByKey(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; 
            student.age=35;
            store.put(student); 
        };
    }
    //刪除數據
    function deleteDataByKey(db,storeName,value){
        var transaction=db.transaction(storeName,'readwrite'); 
        var store=transaction.objectStore(storeName); 
        store.delete(value); 
    }
    //清空object store數據(student)
    function clearObjectStore(db,storeName){
        var transaction=db.transaction(storeName,'readwrite'); 
        var store=transaction.objectStore(storeName); 
        store.clear();
    }
    //關閉數據庫
    function closeDB(db){
        db.close();
    }
    //刪除數據庫
    function deleteDB(name){
        indexedDB.deleteDatabase(name);
    }
    //配置數據庫
    var myDB={
        name:'test2',
        version:3,
        db:null
    };
    
    var students=[
        { 
            id:1001, 
            name:"Byron", 
            age:24 
        },
        { 
            id:1002, 
            name:"Frank", 
            age:30 
        },
        { 
            id:1003, 
            name:"Aaron", 
            age:26 
        }
    ];
    openDB(myDB.name,myDB.version);//打開數據庫
    setTimeout(function(){
        addData(myDB.db,'students');
    },1000);
    //closeDB(myDB.db);//關閉數據庫 打開和關閉數據庫不能同時存在???
    //deleteDB(myDB.name);//刪除數據庫
    
</script>
相關文章
相關標籤/搜索