`

IndexedDB 工具类

阅读更多
var dbUtil = function () {

    var dbInfo={
        dbName:"Wei_You_DB",  // 名称
        dbVersion:"1.0"// 版本
    };
    var $this = this;
    var db;
    var indexedDB = window.indexedDB || window.webkitIndexedDB;

    if ('webkitIndexedDB' in window) {
        window.IDBTransaction = window.webkitIDBTransaction;
        window.IDBKeyRange = window.webkitIDBKeyRange;
    }

    function createDB_And_InitTables(objectStores,successCallBack,failedCallback){

        if(!objectStores || objectStores.length==0) return;

        var request = indexedDB.open(dbInfo.dbName);
        request.onsuccess = function(evt) {
            db = evt.target.result;
            // 只能在 setVersion 事务中创建 Object Stores;
            if (dbInfo.dbVersion!= db.version) {
                var setVReq = db.setVersion(dbInfo.dbVersion);
                // onsuccess 方法是唯一创建 Object Stores 的地方
                setVReq.onerror = dbError;
                setVReq.onsuccess = function() {
                    if(typeof objectStores == "string"){
                        if(!db.objectStoreNames.contains(objectStores)) {
//                            db.deleteObjectStore("ShoppingCart");
                            db.createObjectStore(objectStores,{keyPath: "id"});
                        }
                        return;
                    }
                    if(objectStores instanceof Array){
                        for(var i=0; i<objectStores.length ;i++){
                            if(!db.objectStoreNames.contains(objectStores[i])) {
//                            db.deleteObjectStore("ShoppingCart");
                                db.createObjectStore(objectStores[i],{keyPath: "id"});
                            }
                        }
                    }
                    successCallBack();
                };
            }
            else{
                successCallBack();
            }
        };
        request.onerror = failedCallback || function(e){
            console.error("exec createDB_And_InitTables error cause:"+ e.message);
        };
    }
    //插入或更新数据
    function insertOrUpdateData(data,objectStoreName,successCallBack,failedCallback){
        if(!data || !objectStoreName) return false;
        var trans = db.transaction([objectStoreName], IDBTransaction.READ_WRITE);
        var store = trans.objectStore(objectStoreName);
        var request = store.put(data);
        request.onsuccess = successCallBack;
        request.onerror = failedCallback;
    }
    function dbError(error){
        console.error(error);
    }

 

分享到:
评论

相关推荐

    HTML5本地存储——IndexedDB

    这篇博文将深入探讨IndexedDB的核心概念、用途以及如何在实际项目中运用。 IndexedDB是一种非关系型数据库,它允许在浏览器中存储大量结构化数据,并支持索引,从而可以高效地查询这些数据。与传统的Web存储如...

    jungle-db:适用于NodeJS(LMDB和LevelDB)和浏览器(IndexedDB)的简单数据库抽象层,支持高级功能,例如具有读取隔离和辅助索引的事务

    丛林数据库 JungleDB是NodeJS(LMDB或LevelDB)和浏览器(IndexedDB)的简单数据库抽象层,支持高级功能,例如具有读取隔离和辅助索引的事务。快速开始使用jungle-db的最简单选择是从npm存储库中安装它。 npm ...

    vue实现localStorage工具类

    在Web开发中,浏览器提供了多种方式来存储数据,包括但不限于`sessionStorage`、`localStorage`以及`IndexedDB`等。其中,`localStorage`是一种持久化的本地存储技术,它将数据保存在用户的浏览器上,即使关闭浏览器...

    IndexSQL:通过使其与诸如sintaxis之类SQL兼容来简化IndexedDB的使用的项目

    IndexSQL是一种工具,可通过使其类似于SQL来帮助使用IndexedDB。 它的用法很简单: var indexSQL=new IndexSQL("demo"); indexSQL.execute("CREATE TABLE test (column1 STRING, column2 BOOLEAN, column3 NUMBER);...

    IndexDbHelper:帮助将indexDb管理到浏览器中的工具

    IndexDbHelper 帮助将indexDb管理到浏览器中的工具简化IndexDB使用的类使用来自浏览器的窗口引用或其他提供以下接口的东西来构建它:window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window....

    jquery

    1. **选择器**:jQuery支持CSS选择器,包括ID选择器、类选择器、属性选择器等,极大地提高了代码的可读性和效率。例如,`$(".class")`可以一次性选中所有具有特定类名的元素。 2. **DOM操作**:jQuery提供了丰富的...

    1000份前端js代码模板可做工具类

    这份"1000份前端js代码模板可做工具类"资源集合,旨在为开发者提供大量的代码片段和实用工具,帮助他们更高效地完成项目开发。下面,我们将深入探讨这些标签所涵盖的知识点,并结合资源中的文件名"js代码1000个"来...

    TypeScript渐进式Web应用开发快速入门

    TypeScript是JavaScript的一个超集,由微软开发并维护,它添加了类型系统、接口、类、模块等特性,为大型项目提供了更好的工具链支持。TypeScript编译成标准的JavaScript,可以在任何支持JavaScript的平台上运行。 ...

    前端工具chrome

    6. **应用面板(Application Panel)**:应用面板管理页面的存储,包括Cookie、Local Storage、Session Storage和IndexedDB等。此外,还可以查看和服务工作线程、Manifest文件和Web App Manifest。 7. **审计面板...

    1秒钟找出你在各论坛登录用户名与密码的小工具

    2. **浏览器API**:许多现代浏览器提供了API,如Web Storage(包括Local Storage和Session Storage)和IndexedDB,这些API可能被工具用来读取存储的用户名和密码。 3. **加密与解密**:密码通常被加密存储,因此...

    html5微信小游戏-性格测试.zip

    5. Web Storage & IndexedDB:为了在用户关闭页面后仍能保存游戏数据,开发者可以利用Web Storage(包括localStorage和sessionStorage)或者更高级的IndexedDB来存储数据。 6. 微信小游戏API:微信提供了专门的API...

    front-end-database_FrontEnd_

    2. **IndexedDB**: 是一个NoSQL数据库,支持复杂的数据结构和索引,适用于大量数据的存储,常用于离线应用或需要快速检索的场景。 3. **Cache API**: 是Service Worker的一部分,用于缓存静态资源,改善性能和离线...

    微信HTML5在线朋友圈游戏源码带安装部署教程-砍树.zip

    此外,Web Storage和IndexedDB为游戏数据存储提供了本地化解决方案,而Web Socket则支持实时的双向通信,这对于多人在线游戏至关重要。 在【砍树】这个游戏源码中,我们可以推测它可能是一个简单的点击或滑动操作类...

    pouchdb-adapter:用于 Ember CLI 的全功能 PouchDB 适配器

    1. **IndexedDB Adapter**: 这是 PouchDB 的默认适配器,它使用 W3C 的 IndexedDB 标准,提供高性能的键值对和范围查询。 2. **WebSQL Adapter**: 对于老版本的浏览器,可以使用 WebSQL,这是一个基于 SQL 的数据库...

    网页版天天消消乐HTML5源码

    IndexedDB则是一个非关系型数据库,可以存储大量数据,如游戏成就、等级等。 3. **JavaScript和框架**: 游戏逻辑通常由JavaScript编写,可能使用了某种前端框架(如Vue.js或React.js)来组织代码,提高可维护性和...

    基于HTML5 app

    Web Storage和IndexedDB则可以用于存储用户的偏好设置、历史订单等信息,无需依赖服务器,提高数据访问速度。 接下来,我们来谈谈如何利用HTML5进行APP的架构设计。通常,基于HTML5的APP开发会采用“混合应用”模式...

    基于WEB的 H5制作工具,H5编辑器.zip

    4. 多媒体支持:HTML5的和标签使得视频和音频的嵌入变得简单,同时Web Storage和IndexedDB提供了本地数据存储,利于多媒体内容的离线访问。 5. 游戏开发:HTML5的游戏框架如Phaser、Three.js等,结合Canvas和WebGL,...

    用HTML5新特性开发移动App_蒋宇捷

    IndexedDB则提供了一个更高级的数据库系统,用于存储结构化数据,支持复杂的查询操作。 其次,HTML5的表单控件得到了显著改进,包括新的输入类型(如date、time、email、url等),增强了验证功能,以及更强大的...

    kinda-db-store

    在kinda-db-store这样的项目中,JavaScript被用于创建和操作数据存储机制,这可能涉及到DOM操作、Ajax请求或者使用浏览器提供的API如IndexedDB或Web Storage(localStorage和sessionStorage)。 其次,项目名为...

    基于html5实现的疯狂打企鹅微信小游戏特效源码.zip

    4. localStorage或indexedDB:存储用户的游戏数据和进度。 5. WebSocket:实现玩家间的实时互动。 6. CSS3:用于创建更丰富的视觉效果和过渡动画。 7. JavaScript库或框架:如CreateJS、Phaser等,可以帮助简化游戏...

Global site tag (gtag.js) - Google Analytics