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中,可以 ...
随机推荐
- ODBC连接时报错不可识别的数据库格式
报这个错误是因为Acess的版本不同. 2003版本的Acess的数据连接字符串: string dataBasePath = @"C:/Users/user/Documents/Test. ...
- 79.纯 CSS 创作单元素麦当劳金拱门 Logo(自创)
效果地址:https://scrimba.com/c/cN3P6nfr 原理:两个椭圆,颜色部分为边框,下一半被伪元素覆盖. 感想:看了一眼大神的,代码比我的还少,得研究研究去. HTML code: ...
- 倍增LCA模板
//https://www.luogu.org/problemnew/show/P3379#include<bits/stdc++.h> #define maxn 500010 #defi ...
- OpenGL ES for Android
经过半年的准备OpenGL ES for Android系列文章终于要和大家见面了,在这里定一个小目标-先吸引1000个粉丝,万一实现了呢.写关于OpenGL ES的文章开始是有一些犹豫的,因为Ope ...
- 【Magicodes.IE 2.0.0-beta1版本发布】已支持数据表格、列筛选器和Sheet拆分
为了更好的完善Magicodes.IE,春节期间我们会进行一次大的重构.由于精力有限,急缺文档和翻译(将文档翻译为英文文档)支持,诚邀各位加入.同时在功能方便也做了相关规划,有兴趣的朋友可以参与提交P ...
- Linux.vim.多行复制、删除、剪切
复制: //单行复制+粘贴 yy + p:复制光标所处当前行, 敲p粘贴在光标处. //多行复制+粘贴 n + yy + p:复制光标所在行起以下n行(含当前行), 敲yy复制光标所处当前行, 敲p粘 ...
- C# 添加、删除、读取Word形状(基于Spire.Cloud.Word.SDK)
本文介绍调用Spire.Cloud.Word.SDK提供的接口shapesApi来操作Word形状,包括添加形状AddShape(),添加形状时,可设置形状类型.颜色.大小.位置.倾斜.轮廓.文本环绕 ...
- noip2018 考前提醒!
适应Noilinux 1.终端操作 打开终端 \(Ctrl+Alt+T\) 打开文件夹 \(cd\) +名称 新建文件夹 \(mkdir\) +名称 打开 \(vim\) 配置 \(vim ~/.vi ...
- org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.TooManyResultsException: Expected one result (or null) to be returned by selectOne(), but found: 3报错解决
报错的原因翻译出来: 预期的一个结果(或null)返回selectOne(),但发现:3 意思就是你想得到一个结果值,但是返回了三个结果值. 一般可能测试的时候我们存了几条一样的数据,在登录时,会把同 ...
- RainbowPlan-Alpha版本发布1
博客介绍 这个作业属于哪个课程 https://edu.cnblogs.com/campus/xnsy/GeographicInformationScience/ 这个作业要求在哪里 https:// ...