(function(){ var dbObject = {}; dbObject.open = function(params){ //数据库名 dbObject.db_name = params.db_name; //数据库版本 dbObject.db_version = params.db_version; //存储对象名 dbObject.store_name = params.store_name; //IndexedDB对象 dbObject.db = null; if (!window.indexedDB){ console.log("你的浏览器不支持IndexedDB,请更换浏览器"); } var request = indexedDB.open(dbObject.db_name, dbObject.db_version); //打开数据库成功 request.onsuccess = function(event){ console.log("打开IndexedDB数据库" + dbObject.db_name + "成功"); dbObject.db = event.target.result; if (params.success_callback){ params.success_callback(); } } //打开数据库失败 request.onerror = function(event) { console.log("打开IndexedDB数据库" + dbObject.db_name + "失败"); console.log(event); if (params.error_callback){ params.error_callback(); } } //当打开的数据库版本高于当前版本时触发 request.onupgradeneeded = function(event){ console.log("IndexedDB数据库" + dbObject.db_name + "版本升级到" + dbObject.db_version); dbObject.db = event.target.result; if(!dbObject.db.objectStoreNames.contains(dbObject.store_name)){ dbObject.db.createObjectStore(dbObject.store_name); } } } //添加或修改 dbObject.put = function(key, value){ try{ if (!dbObject.db){ return; } //此处必须显式声明事务 var transaction = dbObject.db.transaction(dbObject.store_name, "readwrite"); var store = transaction.objectStore(dbObject.store_name); var request = store.put(value, key); request.onsuccess = function(){ // console.log("编辑IndexedDB记录成功:" + key); } request.onerror = function(event){ console.log("编辑IndexedDB记录失败:" + key); console.log(event); } } catch(e){ console.log(min_now() + "添加或修改IndexedDB失败"); console.log(e); console.log(key); console.log(value); } } //删除 dbObject.delete = function(key){ try{ if (!dbObject.db){ return; } var transaction = dbObject.db.transaction(dbObject.store_name, "readwrite"); var store = transaction.objectStore(dbObject.store_name); var request = store.delete(key); request.onsuccess = function(){ // console.log("删除IndexedDB记录成功:" + key); } request.onerror = function(event){ console.log("删除IndexedDB记录失败:" + key); console.log(event); } } catch(e){ console.log(min_now() + "删除IndexedDB失败"); console.log(e); console.log(key); } } //根据key获取value dbObject.get = function(key, succ_callback){ try{ if (!dbObject.db){ return; } var transaction = dbObject.db.transaction(dbObject.store_name, "readwrite"); var store = transaction.objectStore(dbObject.store_name); var request = store.get(key); request.onsuccess = function(){ succ_callback(request.result); } request.onerror = function(event){ console.log("获取IndexedDB记录失败:" + key); console.log(event); } } catch(e){ console.log(min_now() + "获取IndexedDB失败"); console.log(e); console.log(key); } } //获取所有的value dbObject.get_allvalue = function(success_callback, error_callback){ try{ if (!dbObject.db){ return; } var transaction = dbObject.db.transaction(dbObject.store_name, "readwrite"); var store = transaction.objectStore(dbObject.store_name); var request = store.getAll(); request.onsuccess = function(){ if (success_callback){ success_callback(request.result); } } request.onerror = function(event){ console.log("获取IndexedDB记录失败:all"); console.log(event); if (error_callback){ error_callback(); } } } catch(e){ console.log(min_now() + "获取全部的IndexedDB失败"); console.log(e); } } //游标遍历 dbObject.get_cursor = function(success_callback, error_callback){ try{ if (!dbObject.db){ return; } var transaction = dbObject.db.transaction(dbObject.store_name, "readwrite"); var store = transaction.objectStore(dbObject.store_name); var request = store.openCursor(); request.onsuccess = function(event){ if (success_callback){ success_callback(event.target.result); } } request.onerror = function(event){ console.log("获取IndexedDB记录失败:游标"); console.log(event); if (error_callback){ error_callback(); } } } catch(e){ console.log(min_now() + "获取IndexedDB游标失败"); console.log(e); } } //清除整个对象存储(表) dbObject.clear = function(){ try{ if (!dbObject.db){ return; } var transaction = dbObject.db.transaction(dbObject.store_name, "readwrite"); var store = transaction.objectStore(dbObject.store_name); var request = store.clear(); request.onsuccess = function(){ console.log("清空IndexedDB对象存储成功:" + dbObject.store_name); } request.onerror = function(event){ console.log("清空IndexedDB对象存储失败:" + dbObject.store_name); console.log(event); } } catch(e){ console.log(min_now() + "清除IndexedDB失败"); console.log(e); } } window.dbObject = dbObject; })();