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); } };
htm5本地存储方案——indexdb的封装的更多相关文章
- htm5本地存储方案——websql的封装
一.websql 简介 在HTML5中,大大丰富了客户端本地可以存储的内容,添加了很多功能来将原本必须保存在服务器上的数据转为保存在客户端本地,从而大大提高了Web应用程序的性能,减轻了服务器端的 ...
- [转]App离线本地存储方案
App离线本地存储方案 原文地址:http://ask.dcloud.net.cn/article/166 HTML5+的离线本地存储有如下多种方案:HTML5标准方案:cookie.localsto ...
- [转]Dcloud App离线本地存储方案
原文地址:http://ask.dcloud.net.cn/article/166 HTML5+的离线本地存储有如下多种方案:HTML5标准方案:cookie.localstorage.session ...
- Android本地存储方案 SharedPreferences
原文地址:http://www.yanwushu.com/post/43.html 存储位置 SharedPreferences数据保存在: /data /data/<package_name& ...
- JavaScript本地存储实践(html5的localStorage和ie的userData)
http://www.css88.com/archives/3717 JavaScript本地存储实践(html5的localStorage和ie的userData) 发表于 2011年06月11日 ...
- 小强的HTML5移动开发之路(19)——HTML5 Local Storage(本地存储)
来自:http://blog.csdn.net/dawanganban/article/details/18218701 一.浏览器存储的发展历程 本地存储解决方案很多,比如Flash SharedO ...
- web前端实现本地存储
当我们在提及web前端本地存储的时候,首先需要介绍一下本地化存储的概念和历史.本地化存储从来不是一个新奇的概念,因为web应用程序一直在追求的就是媲美甚至超越桌面应用程序.但是桌面应用程序一直优于we ...
- 本地存储localStorage以及它的封装接口store.js的使用
本地存储localStorage以及它的封装接口store.js的使用 sublime-text chrome javascript readyGo 2016年11月20日发布 0 推荐 9 收藏 ...
- HTML5 学习总结(三)——本地存储
一.HTML4客户端存储 B/S架构的应用大量的信息存储在服务器端,客户端通过请求响应的方式从服务器获得数据,这样集中存储也会给服务器带来相应的压力,有些数据可以直接存储在客户端,传统的Web技术中会 ...
随机推荐
- mongodb 跟踪SQL语句及慢查询收集
有个需求:跟踪mongodb的SQL语句及慢查询收集 第一步:通过mongodb自带函数可以查看在一段时间内DML语句的运行次数. 在bin目录下面运行 ./mongostat -port 端口号 ...
- bzoj千题计划133:bzoj3130: [Sdoi2013]费用流
http://www.lydsy.com/JudgeOnline/problem.php?id=3130 第一问就是个最大流 第二问: Bob希望总费用尽量大,那肯定是把所有的花费加到流量最大的那一条 ...
- hive介绍
我最近研究了hive的相关技术,有点心得,这里和大家分享下. 首先我们要知道hive到底是做什么的.下面这几段文字很好的描述了hive的特性: 1.hive是基于Hadoop的一个数据仓库工具,可以将 ...
- 监控Elasticsearch的插件【check_es_system】
监控Elasticsearch的插件推荐 强大的shell脚本 #!/bin/bash ####################################################### ...
- 对 jQuery 中 data 方法的误解
一直以来都认为新版本中 data 是调用 dataset 实现的,对于低版本IE则采用 getAttribute其实一直是我误解了,也不知道最初这个想法是怎么来的.难道我被盗梦了? 今天 谢亮 兄弟和 ...
- 希尔密码(Hill Cipher)的实现
原理应该不用多讲了,自己百度就可以. C++实现: #include <iostream> #include <string> #include <memory.h> ...
- jquery中美元符号命名冲突问题解决
在Jquery中,$是JQuery的别名,所有使用$的地方也都可以使用JQuery来替换,如$('#msg')等同于JQuery('#msg') 的写法.然而,当我们引入多个js库后,在另外一个js库 ...
- sort函数(cmp)、map用法---------------Tju_Oj_2312Help Me with the Game
这道题里主要学习了sort函数.sort的cmp函数写法.C++的map用法(其实和数组一样) Your task is to read a picture of a chessboard posit ...
- c++刷题(12/100)无序数组中和为定值的最长子数组
题目一: 最短无序连续子数组 给定一个整数数组,你需要寻找一个连续的子数组,如果对这个子数组进行升序排序,那么整个数组都会变为升序排序. 你找到的子数组应是最短的,请输出它的长度. 示例 1: 输入: ...
- url参数用&拼接并且按照字母顺序排序方法
private string urlParamManager(JObject postArray, bool flag) { ArrayList keys = new ArrayList(); for ...