199 lines
6.4 KiB
JavaScript
199 lines
6.4 KiB
JavaScript
(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;
|
||
})();
|