//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的更多相关文章

  1. JavaScript如何正确处理Unicode编码问题!

    原文:JavaScript 如何正确处理 Unicode 编码问题! 作者:前端小智 Fundebug经授权转载,版权归原作者所有. JavaScript 处理 Unicode 的方式至少可以说是令人 ...

  2. 浏览器本地数据库 IndexedDB 基础详解

    一.概述 随着浏览器的功能不断增强,越来越多的网站开始考虑,将大量数据储存在客户端,这样可以减少从服务器获取数据,直接从本地获取数据. 现有的浏览器数据储存方案,都不适合储存大量数据:Cookie 的 ...

  3. 浏览器数据库 IndexedDB 入门

    一.概述 随着浏览器的功能不断增强,越来越多的网站开始考虑,将大量数据储存在客户端,这样可以减少从服务器获取数据,直接从本地获取数据. 现有的浏览器数据储存方案,都不适合储存大量数据:Cookie 的 ...

  4. 浏览器数据库 IndexedDB 入门教程

    一.概述 随着浏览器的功能不断增强,越来越多的网站开始考虑,将大量数据储存在客户端,这样可以减少从服务器获取数据,直接从本地获取数据. 现有的浏览器数据储存方案,都不适合储存大量数据:Cookie 的 ...

  5. 客户端持久化数据库---indexedDB使用

    _ 阅读目录 一:什么是indexedDB数据库? 二:IndexedDB数据库操作 2.1 打开或创建数据库 2.2 创建对象仓库(或叫创建表) 2.3 创建索引 2.4 新增数据 2.5 读取数据 ...

  6. html5本地存储(三)--- 本地数据库 indexedDB

    html5内置了2种本地数据库,一是被称为“SQLLite”,可以通过SQL语言来访问文件型SQL数据库.二是被称为“indexedDB” 的NoSQL类型的数据库,本篇主要讲indexedDB数据库 ...

  7. 【转】LokiJS:纯JavaScript实现的轻量级数据库

    原文转自:http://www.html5cn.org/article-7091-1.html LokiJS一个轻量级的面向文档的数据库,由JavaScript实现,性能高于一切.目的是把JavaSc ...

  8. SQL Server系统视图sys.master_files不能正确显示数据库脱机状态

    最近发现在SQL Server数据库(目前测试过SQL Server 2008, 2012,2014,2016各个版本)中,即使数据库处于脱机(OFFLINE)状态,但是sys.master_file ...

  9. 浏览器数据库IndexedDB介绍

    摘要 在移动端H5页面开发的时候,为了更好的提高用户体验,可以对不常变化的数据做浏览器端数据缓存,在用户打开页面的时候,首先加载本地的数据,然后异步请求服务端,更新数据.在移动端webview中,可以 ...

随机推荐

  1. Spring Boot2 系列教程 (二) | 第一个 SpringBoot 工程详解

    微信公众号:一个优秀的废人 如有问题或建议,请后台留言,我会尽力解决你的问题. 前言 哎呦喂,按照以往的惯例今天周六我的安排应该是待在家学学猫叫啥的.但是今年这种日子就可能一去不复返了,没法办法啊.前 ...

  2. Spring-cloud微服务实战【三】:eureka注册中心(中)

      回忆一下,在上一篇文章中,我们创建了两个springboot项目,并且在consumer项目中通过restTemplate进行HTTP通信,成功访问到了producer提供的接口,思考一下这样的实 ...

  3. Scheme实现数字电路仿真(2)——原语

    版权申明:本文为博主窗户(Colin Cai)原创,欢迎转帖.如要转贴,必须注明原文网址 http://www.cnblogs.com/Colin-Cai/p/12045295.html 作者:窗户 ...

  4. Selenium的简单使用

    selenium的使用对于新手来说十分友好,因为他避开了如今网络中的异步加载抓取的困扰,使得我们大部分的时间可以用于提取信息和存储中,下面就简单的列一些使用的代码,希望给同样初学的你有一定的参考价值. ...

  5. python 快速创建字典 fromkes()

    作用:快速创建字典 特点:共用value seq = ['google', 'ie', 'firefox'] # seq为可迭代对象(str, list, tuple, dict, set) dic ...

  6. 到头来还是逃不开Java - Java13程序基础

    java程序基础 没有特殊说明,我的所有学习笔记都是从廖老师那里摘抄过来的,侵删 引言 兜兜转转到了大四,学过了C,C++,C#,Java,Python,学一门丢一门,到了最后还是要把Java捡起来. ...

  7. 【javaScript】js出现allocation size overflow以及字符串拼接优化

    字符串拼接长一点了,就出现了allocation size overflow异常! 先创建缓冲字符串数组,最后将数组转化为字符串 <script type="text/javascri ...

  8. EditPlus 添加 打开文件所在文件夹 功能

    添加自定义工具: Tools -> Configure User Tools... -> Add Tool >> Menu Text: 打开所在的文件夹 Command: ex ...

  9. ubuntu 18.04.1安装hadoop3.1.2

    前提,虚拟机安装 见https://www.cnblogs.com/cxl-blog/p/11363183.html 一.按照https://blog.csdn.net/MastetHuang/art ...

  10. Python读取字典(Dictionary)内数据的方法

    读取json后,数据类型为字典,对字典内数据的提取又有不同的方法,根据不同的字典类型 上图可以看到有”[]”,”{}” python语言最常见的括号有三种,分别是:小括号( ).中括号[ ]和大括号也 ...