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>

 

转载于:https://www.cnblogs.com/longfeiPHP/p/5359160.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值