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并不像是一个服务器程序,而更像是一个客户端程序. ...
- pqsql 防注入
在数据库查询时经常会遇到根据传入的参数查询内容的情况,传入的参数有可能会带有恶意代码,比如or 1=1,这样where判断为true,就会返还所有的记录.为了解决这个问题,可以在参数外面包一层单引号, ...
- Asp.Net Core下的开源任务调度平台ScheduleMaster—快速上手
概述 ScheduleMaster是一个开源的分布式任务调度系统,它基于Asp.Net Core平台构建,支持跨平台多节点部署运行. 它的项目主页在这里: https://github.com/hey ...
- asp.net core 基于 JSON 实现多语言
asp.net core 基于 JSON 实现多语言 Intro 上次我们提到了,微软默认提供基于资源文件的多语言本地化,个人感觉使用起来不是太方便,没有 json 看起来直观,于是动手造了一个轮子, ...
- Java 几道常见String面试题
String s1="abc"; String s2="abc"; System.out.println(s1==s2); System.out.println ...
- Logback源码分析
在日常开发中经常通过打印日志记录程序执行的步骤或者排查问题,如下代码类似很多,但是,它是如何执行的呢? package chapters; import org.slf4j.Logger; impor ...
- 官方文档中文版!Spring Cloud Stream 快速入门
本文内容翻译自官方文档,spring-cloud-stream docs,对 Spring Cloud Stream的应用入门介绍. 一.Spring Cloud Stream 简介 官方定义 Spr ...
- mysql 行增删改查
一.增 ); ),(); insert into student(name, age) select name, age from info; 二.删 delete from db1; delete ...
- moco响应中文乱码
moco版本为:moco-runner-standalone-0.11.1.jar 在一次使用moco框架的时候,浏览器查看响应时,发现返回来的中文是乱码. 按照网上的操作,在响应结果中加上heade ...
- 深入浅出WPF笔记
数据层(Database,Oracle等) 业务逻辑层(Service,Data Access Layer,WCF) 表示层(WPF,Win Form,ASP.net,Silverlight) [WP ...