javascript 完全正确的数据库indexedDB
//indexedDB
var dbName = 'whx', version = '1', dbTableName = 'bbg', request, db, conCls, updateKey, fun = new Fun();
function openDbs(){//请求数据库
fun.elem('codeId').innerHTML += '打开数据库<br />'; request.onupgradeneeded = function(e){
fun.elem('codeId').innerHTML += '新的版本号<br />';
var t = e.target.result;
if(!t.objectStoreNames.contains(dbTableName)){
var dbB = t.createObjectStore(dbTableName, {
keyPath : 'id',
autoIncrement : true
});
dbB.createIndex('id','id',{unique : false});
fun.elem('codeId').innerHTML += '创建新表<br />';
}
} request.onsuccess = function(e){
fun.elem('codeId').innerHTML += '旧的版本号<br />';
db = e.target.result;//数据库对象
fun.elem('codeId').innerHTML += '保存数据库对象<br />';
} request.onerror = function(){
fun.elem('codeId').innerHTML += '打开数据库失败<br />';
} fun.display('consTxtId','none');//add content in table
fun.value('sltId','','set');//add content in table
fun.display('dbConId','block');//db btn
} function close(){//关闭
db.close();
fun.elem('codeId').innerHTML += '关闭数据库<br />';
db.onclose = function(){//没用...
alert('close read');
}
} function deleteDb(){//删除
indexedDB.deleteDatabase(dbName);
fun.elem('codeId').innerHTML += '删除数据库<br />';
} function showTb(){//查看表内容
var setTable = db.transaction(dbTableName,'readwrite');//设置表权限
fun.elem('codeId').innerHTML += '设置表权限<br />'; var getTable = setTable.objectStore(dbTableName);//获取表对象
fun.elem('codeId').innerHTML += '获取表对象<br />'; var cursor = getTable.openCursor();//创建游标
fun.elem('codeId').innerHTML += '创建游标<br />'; fun.elem('codeId').innerHTML += '获取表信息<br />'; fun.value('sltId','','set'); cursor.onsuccess = function(e){
var cursorObj = e.target.result;//获取游标对象
console.log(cursorObj);
if(cursorObj != null){
fun.elem('sltId').innerHTML += "id : " + cursorObj.value.id + ", content : " + cursorObj.value.content + " <span onclick='conUpdate("+cursorObj.key+")'>修改</span> || <span onclick='conDelete("+cursorObj.key+")'>删除</span><br /><br />";
if(cursorObj.key == 2){
//console.log(cursorObj.value);
}
cursorObj.continue();//游标移动下一个条
}
} cursor.onerror = function(){
fun.elem('codeId').innerHTML += '创建游标失败<br />';
}
} function addCon(con){//添加
var setTable = db.transaction(dbTableName,'readwrite');//设置表权限
fun.elem('codeId').innerHTML += '设置表权限<br />'; var getTable = setTable.objectStore(dbTableName);//获取表对象
fun.elem('codeId').innerHTML += '获取表对象<br />'; var conSet = getTable.add(con);
conSet.onsuccess = function(){
showTb();
fun.elem('codeId').innerHTML += '添加内容成功<br />';
}
} function updateCon(key,con){//修改
var setTable = db.transaction(dbTableName,'readwrite');//设置表权限
fun.elem('codeId').innerHTML += '设置表权限<br />'; var getTable = setTable.objectStore(dbTableName);//获取表对象
fun.elem('codeId').innerHTML += '获取表对象<br />'; var update = getTable.put({content : con.content, id : key});
update.onsuccess = function(){
showTb();
fun.elem('codeId').innerHTML += "修改key:"+key+"内容成功<br />";
}
} function deleteCon(key){//删除
var setTable = db.transaction(dbTableName,'readwrite');//设置表权限
fun.elem('codeId').innerHTML += '设置表权限<br />'; var getTable = setTable.objectStore(dbTableName);//获取表对象
fun.elem('codeId').innerHTML += '获取表对象<br />'; var dlt = getTable.delete(key);
dlt.onsuccess = function(){
showTb();
fun.elem('codeId').innerHTML += "删除key:"+key+"内容成功<br />";
}
} //------------------------------------------------btn-------------------------------------------
fun.elem('openDbId').onclick = function(){//request indexedDb btn
if('indexedDB' in window){
request = indexedDB.open(dbName,version);
openDbs();
}else{
alert('当前浏览器不支持indexedDB!');
}
} fun.elem('ddId').onclick = function(){//delete database btn
fun.value('codeId','','set');
fun.display('dbConId','none');
deleteDb();
close();
} fun.elem('closeId').onclick = function(){//close database btn
fun.value('codeId','','set');
fun.display('dbConId','none');
close();
} fun.elem('tbId').onclick = function(){//tables btn
showTb();
} fun.elem('aitId').onclick = function(){//add content in table btn
if(fun.elem('consTxtId').style.display == 'block'){
conCls = '';
fun.display('consTxtId','none');
fun.value('conMsgId','','set');
}else{
conCls = 'add';
fun.value('conMsgId','添加 : ','set');
fun.display('consTxtId','block');
}
} fun.elem('confirmAddId').onclick = function(){//confirm btn
if(fun.elem('conId').value == ''){
alert('内容为空');
}else{
var con = {content : fun.elem('conId').value};
if(conCls != undefined){
if(conCls == "add"){
addCon(con);
}
if(conCls == "update"){
if(updateKey != undefined){
updateCon(updateKey,con);
}
}
fun.display('consTxtId','none');
fun.elem('conId').value = '';
}
}
} //content btn
function conUpdate(key){//修改 btn
conCls = 'update';
updateKey = key;
fun.value('conMsgId','修改 : ','set');
fun.display('consTxtId','block');
}
function conDelete(key){//删除 btn
deleteCon(key);
}
</script>
javascript 完全正确的数据库indexedDB的更多相关文章
- JavaScript如何正确处理Unicode编码问题!
原文:JavaScript 如何正确处理 Unicode 编码问题! 作者:前端小智 Fundebug经授权转载,版权归原作者所有. JavaScript 处理 Unicode 的方式至少可以说是令人 ...
- 浏览器本地数据库 IndexedDB 基础详解
一.概述 随着浏览器的功能不断增强,越来越多的网站开始考虑,将大量数据储存在客户端,这样可以减少从服务器获取数据,直接从本地获取数据. 现有的浏览器数据储存方案,都不适合储存大量数据:Cookie 的 ...
- 浏览器数据库 IndexedDB 入门
一.概述 随着浏览器的功能不断增强,越来越多的网站开始考虑,将大量数据储存在客户端,这样可以减少从服务器获取数据,直接从本地获取数据. 现有的浏览器数据储存方案,都不适合储存大量数据:Cookie 的 ...
- 浏览器数据库 IndexedDB 入门教程
一.概述 随着浏览器的功能不断增强,越来越多的网站开始考虑,将大量数据储存在客户端,这样可以减少从服务器获取数据,直接从本地获取数据. 现有的浏览器数据储存方案,都不适合储存大量数据:Cookie 的 ...
- 客户端持久化数据库---indexedDB使用
_ 阅读目录 一:什么是indexedDB数据库? 二:IndexedDB数据库操作 2.1 打开或创建数据库 2.2 创建对象仓库(或叫创建表) 2.3 创建索引 2.4 新增数据 2.5 读取数据 ...
- html5本地存储(三)--- 本地数据库 indexedDB
html5内置了2种本地数据库,一是被称为“SQLLite”,可以通过SQL语言来访问文件型SQL数据库.二是被称为“indexedDB” 的NoSQL类型的数据库,本篇主要讲indexedDB数据库 ...
- 【转】LokiJS:纯JavaScript实现的轻量级数据库
原文转自:http://www.html5cn.org/article-7091-1.html LokiJS一个轻量级的面向文档的数据库,由JavaScript实现,性能高于一切.目的是把JavaSc ...
- SQL Server系统视图sys.master_files不能正确显示数据库脱机状态
最近发现在SQL Server数据库(目前测试过SQL Server 2008, 2012,2014,2016各个版本)中,即使数据库处于脱机(OFFLINE)状态,但是sys.master_file ...
- 浏览器数据库IndexedDB介绍
摘要 在移动端H5页面开发的时候,为了更好的提高用户体验,可以对不常变化的数据做浏览器端数据缓存,在用户打开页面的时候,首先加载本地的数据,然后异步请求服务端,更新数据.在移动端webview中,可以 ...
随机推荐
- Linux 7.5 SSH服务和SFTP服务分离
SFTP是SSH的一部分,SFTP没有单独的守护进程,它必须使用SSHD守护进程(端口号默认是22)来完成相应的连接操作,所以从某种意义上来说,SFTP并不像是一个服务器程序,而更像是一个客户端程序. ...
- TensorFlow——TensorBoard可视化
TensorFlow提供了一个可视化工具TensorBoard,它能够将训练过程中的各种绘制数据进行展示出来,包括标量,图片,音频,计算图,数据分布,直方图等,通过网页来观察模型的结构和训练过程中各个 ...
- 【设计模式】 (2)关于UML
UML -- Unified Modeling Lanaguage(统计建模语言),是一种软件系统分析和设计的语言工具,他用于帮助软件开发人员进行思考和记录思路的结果. UML本身是一套符号的规定,就 ...
- 关于SDWebImage的一点小坑
做项目遇到一个问题,是用sd加载图片,明明本地有图片,使用sd的内部方法也可以拿到那些个图片,但是就是加载缓慢,如果网络还行,网络加载图片都比加载本地图片快.而使用[[SDImageCache ...
- http GET 和 POST 请求的优缺点和误区 --前端优化
Get和Post在面试中一般都会问到,一般的区别:(1)post更安全(不会作为url的一部分,不会被缓存.保存在服务器日志.以及浏览器浏览记录中)(2)post发送的数据更大(get有url长度限制 ...
- Activiti工作流引擎开发系列
Activiti工作流引擎开发系列-01 作者:Jesai 没有伞的孩子,只能光脚奔跑! 前言: 初次接触工作流这个概念是自从2014年11月份开始,当时是由于我的毕业设计需要,还记得当时我毕业设计的 ...
- rabbitmq 实现延迟队列的两种方式
原文地址:https://blog.csdn.net/u014308482/article/details/53036770 ps: 文章里面延迟队列=延时队列 什么是延迟队列 延迟队列存储的对象肯定 ...
- 玩转Django2.0---Django笔记建站基础九(一)(Auth认证系统)
第九章 Auth认证系统 Django除了有强大的Admin管理系统之外,还提供了完善的用户管理系统.整个用户管理系统可分为三大部分:用户信息.用户权限和用户组,在数据库中分别对应数据表auth_us ...
- 深入Nodejs模块fs - 文件系统操作
node 的fs文档密密麻麻的 api 非常多,毕竟全面支持对文件系统的操作.文档组织的很好,操作基本分为文件操作.目录操作.文件信息.流这个大方面,编程方式也支持同步.异步和 Promise. 本文 ...
- html恶搞之无限弹窗
啦啦啦啦啦 恶搞别人吗? 把下面代码做成html文件发给别人,用浏览器打开就可以看见效果了 <!DOCTYPE html> <html><head><meta ...