zoukankan      html  css  js  c++  java
  • htm5本地存储方案——indexdb的封装

    不BB直接上代码

    /*封装IndexdDB*/
    var localDatabase = {
    
    };
    localDatabase.dbName = "yiliDB";
    localDatabase.indexedDB = window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB;
    localDatabase.db = null;
    localDatabase.IDBKeyRange = window.IDBKeyRange || window.webkitIDBKeyRange;
    localDatabase.IDBCursor = window.IDBCursor || window.webkitIDBCursor;
    localDatabase.IDBTransaction = window.IDBTransaction || window.webkitIDBTransaction;
    localDatabase.indexedDB.onerror = function(e) {
        console.log("Database error: " + e.target.errorCode);
    };
    //删除数据库
    localDatabase.deleteIndexdDB = function() {
        var deleteDbRequest = localDatabase.indexedDB.deleteDatabase(localDatabase.dbName);
        deleteDbRequest.onsuccess = function(event) {
            console.log('Database deleted');
            localDatabase.db = null;
        };
        deleteDbRequest.onerror = function(e) {
            console.log("Database error: " + e.target.errorCode);
    
        };
    };
    //打开数据库
    localDatabase.openIndexdDB = function(callback) {
        console.log("init IndexdDB");
        try {
            var openRequest = localDatabase.indexedDB.open(localDatabase.dbName);
            openRequest.onerror = function(e) {
                callback("Database error: " + e.target.errorCode);
            };
            openRequest.onsuccess = function(event) {
                localDatabase.db = openRequest.result;
                console.log("Open IndexdDB success.");
                callback("success");
                localDatabase.db.onversionchange = function() {
                    console.log("DB close");
                    localDatabase.db.close();
                };
    
            };
            openRequest.onupgradeneeded = function(evt) {
                console.log('Creating object stores');
                var MessageStore = evt.currentTarget.result.createObjectStore("message");
                MessageStore.createIndex("userid", "userid", {
                    unique: false
                });
    
            };
    
        } catch(e1) {
    
            console.log(e1);
    
        }
    
    };

    再来个测试的例子

    //添加消息
    localDatabase.addMessageToIndexDB = function(obj, userid) {
        try {
            console.log(localDatabase.db);
            if(localDatabase != null && localDatabase.db != null) {
                var transaction = localDatabase.db.transaction("message", "readwrite");
                var store = transaction.objectStore("message");
                var request = store.get(userid);
                request.onsuccess = function(e) {
                    var result = e.target.result;
                    var exist = 0;
                    if(typeof result != 'undefined') {
                        for(var i = 0; i < result.length; i++) {
                            if(result[i].userid == obj.userid) {
                                result[i] = obj;
                                exist++;
                                break;
                            }
                        }
                        if(!exist) {
                            result.push(obj);
                        }
                        store.put(result, userid);
                    } else {
                        store.add([obj], userid);
                    }
                };
            }
        } catch(e) {
            console.log(e)
        }
    };
    //获取消息
    localDatabase.getMessage = function(userid, callback) {
        try {
    
            if(localDatabase != null && localDatabase.db != null) {
    
                var store = localDatabase.db.transaction("message").objectStore("message");
                //            var index = store.index("userid");
                //            var request = index.openCursor(IDBKeyRange.only(userid));
                request = store.get(userid);
                request.onsuccess = function(res) {
                    var result = res.target.result;
                    if(typeof result != 'undefined') {
                        callback(result);
                    } else {
                        callback(null);
                    }
    
                };
    
            }
        } catch(e) {
    
            console.log(e);
    
        }
    
    };
  • 相关阅读:
    DAT批处理文件语法
    TreeView控件问题汇总
    windows xp home安装iis
    【Vegas原创】网站计数器(asp)
    转载:shell python脚本互调
    转载:linux的文件属性和权限学习——分析ls命令结果
    python 正则表达式匹配中文
    Python正则表达式
    linux命令备份
    移植算法编译环境到linux【redhat9.0如何显示汉字】
  • 原文地址:https://www.cnblogs.com/huguodong/p/7372762.html
Copyright © 2011-2022 走看看