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中,可以 ...
随机推荐
- Scala实践4
一.数组 在Scala中,用()来访问元素,数组声明的语法格式如下 : var z:Array[String] = new Array[String](3) 或 var z = new Array[S ...
- 记一次docker镜像导出导入流程
目标:导出测试环境的镜像到本地机器 过程: 测试机: docker save -o /Dockerfile/crontabService/php72.tar lnmp72:v1.4 压缩,要不文件太大 ...
- python中super()
super() : 获取当前类的父类 效果图: 代码: class Animal: def __init__(self,name): self._name = name @property def n ...
- Django 信号量
参考:https://www.cnblogs.com/wupeiqi/articles/5246483.html 一.信号:就是一些动作发生的时候,信号允许特定的发送者去提醒一些接受者 ...
- Linux下搭建Jmeter+Ant+Jenkins自动化测试框架
前言 在之前的文章中,我们学习了通过Ant调用Jmeter脚本生成HTML测试报告,但未实现自动执行脚本生成报告,同时生成的报告是在Linux下,查看报告很不方便.因此,我们将结合Jenkins来进一 ...
- 20191211 HNOI2017模拟赛 C题
题目: 分析: 开始觉得是神仙题... 然后发现n最多有2个质因子 这说明sm呢... 学过物理的小朋友们知道,当一个物体受多个不同方向相同的力时,只有相邻力的夹角相等,受力就会平衡 于是拆扇叶相当于 ...
- 创建dynamics CRM client-side (六) - form & field notification
form 和 field 的notification在开发当中会经常使用到 // Converting functions to Namespace Notation var Sdk = window ...
- windows系统中如何找到某程序运行的本地文件
主要通过window自带的服务功能来查询: 比如:
- 机器学习李航——Adaboost课本例题实现
例8.1Adaboost的例子 注意求D3或者D4的时候只需要把w替换一下就行,记得还得改阈值.这个代码算个半自动的,因为还需要手动改一下. import numpy as np def getA(e ...
- Docker基础内容之仓库
前言 Docker提供了开放的中央仓库dockerhub,同时也允许我们使用registry搭建本地私有仓库.搭建私有仓库有如下的优点: 节省网络带宽,提升Docker部署速度,不用每个镜像从Dock ...