WebSQL实例记录
<table id="content"> </table>
<br>
<input type="button" id="clearBtnHook" value="更新缓存" />
<script> /** 静态初始化本地数据库**/
function initSql(dbname,version,description,maxSize,callback){
var myDB = null;
// var support = testAgentSupoort();
var support = true;
try{
//不支持本地存储,执行回调函数兼容
if(!window.openDatabase || support == false){
if(typeof callback ==="function"){
callback();
return false;
}
}else{
var mydbname = dbname || "myDB",
myversion = version || "1.0",
mydescription = description || "firstTest",
mymaxSize = maxSize || 100000;
myDB = openDatabase(mydbname,myversion,mydescription,mymaxSize);
}
}catch(e){
alert("Unknown error "+e+".");
}
return myDB;
}; /**创建数据表**/
function creatTables(db,str){
if(!db){
alert("Failed to connect to database.");
}else{ db.transaction(function (transaction) {
transaction.executeSql(
'CREATE TABLE IF NOT EXISTS '+str,
[],
function(result){
// alert('创建表成功');
},
function(tx,error){
alert("建表错误"+error);
});
}); }
}; function testAgentSupoort(){
var ua = navigator.userAgent,
platform = navigator.platform,
// Rendering engine is Webkit, and capture major version
wkmatch = ua.match( /AppleWebKit\/([0-9]+)/ ),
wkversion = !!wkmatch && wkmatch[ 1 ];
if (
/** 是否为os系统**/
(ua.indexOf( "iPhone" ) > -1 || ua.indexOf( "iPad" ) > -1 || ua.indexOf( "iPod" ) > -1 ) ||
/** 是否为安卓,并且版本不于534(Android 4.0)**/
( ua.indexOf( "Android" ) > -1 && wkversion && wkversion>=534)
){
return true;
} return false; } var dbUtil = {
insert:function(db,tabName,Arr){ /**向表插入数据**/
var str=[];
if(Object.prototype.toString.call(Arr) === '[object Array]'){
for(var i=0,len =Arr.length;i<len;i++){
str.push("?");
}
str = str.join(',');
}else{
alert("最后一位参数必须为数组");
}
db.transaction(
function (transaction) {
transaction.executeSql('INSERT INTO '+tabName+' values('+str+')',Arr,
function(result){}, function(tx,error){});
}) ;
},
deleted:function(db,tabName,keyArr){ /**删除数据**/
var str="",key=[]
if(typeof keyArr==="object"){
for(var i in keyArr){
str+=i+"=? ";
key.push(keyArr[i]);
}
}
db.transaction(
function (transaction) {
transaction.executeSql("DELETE FROM "+tabName+" where "+str,key,
function (tx, result) {},function (tx, error) {alert('更新失败: ' + error.message);});
}); },
update:function(db,tabName,upArr,keyArr,callback){ /**更新数据**/
var strs=[],str1="",key=[],up =[];
if(typeof upArr==="object" && typeof keyArr==="object" ){
for(var i in upArr){
strs.push(i+"=? ");
up.push(upArr[i]);
}
for(var k in keyArr){
str1+=k+"=? ";
key.push(keyArr[k]); } }else{
alert("后两位参数必须为对象");
}
strs = strs.join(',');
lastArr =up.concat(key);
db.transaction(
function (transaction) {
transaction.executeSql("UPDATE "+tabName+" SET "+strs+" where "+str1,lastArr,
function (tx, result) {
if(typeof callback ==="function"){
callback(result)
}
},function (tx, error) {alert('更新失败: ' + error.message);});
}); },
query:function(db,mysql,keyArr,callback){ /**查询数据**/
if(mysql){
db.transaction(
function (transaction) {
transaction.executeSql( mysql,keyArr,
function (tx, result) {
if(typeof callback ==="function"){
callback(result)
}
},function (tx, error) {alert('查询失败: ' + error.message);});
});
} },
droptable: function(db,tabName){ /** 删除数据表**/
db.transaction(function (tx) {
tx.executeSql('drop table '+tabName);
}); }
} window.localData = {
hname:location.hostname?location.hostname:'localStatus',
isLocalStorage:window.localStorage?true:false,
dataDom:null, initDom:function(){
if(!this.dataDom){
try{
this.dataDom = document.createElement('input');
this.dataDom.type = 'hidden';
this.dataDom.style.display = "none";
this.dataDom.addBehavior('#default#userData');
document.body.appendChild(this.dataDom);
var exDate = new Date();
exDate = exDate.getDate()+30;
this.dataDom.expires = exDate.toUTCString();
}catch(ex){
return false;
}
}
return true;
},
set:function(key,value){
if(this.isLocalStorage){
window.localStorage.setItem(key,value);
}else{
if(this.initDom()){
this.dataDom.load(this.hname);
this.dataDom.setAttribute(key,value);
this.dataDom.save(this.hname)
}
}
},
get:function(key){
if(this.isLocalStorage){
return window.localStorage.getItem(key);
}else{
if(this.initDom()){
this.dataDom.load(this.hname);
return this.dataDom.getAttribute(key);
}
}
},
remove:function(key){
if(this.isLocalStorage){
localStorage.removeItem(key);
}else{
if(this.initDom()){
this.dataDom.load(this.hname);
this.dataDom.removeAttribute(key);
this.dataDom.save(this.hname)
}
}
}
} //创建本地数据库
var MDB = initSql('','','','','');
//设置本地存储标示
var flag = localData.get('flag');
// alert(flag)
if(flag){
//删除数据
// var id = 1;
// dbUtil.deleted(MDB,"Shop",{id:id});
var weid = 1;
//查询数据
// dbUtil.query(MDB,"SELECT * FROM Shop where id=?",[weid],function(result){ //查询单条数据
dbUtil.query(MDB,"SELECT * FROM Shop",[],function(result){
// alert(result.rows.item(0)["id"]);
var shopname = '';
var id = '';
var addtime = '';
var html = '<tr><th>id</th><th>shopname</th><th>addtime</th></tr>';
for(var i=0,le = result.rows.length;i<le;i++){
shopname = result.rows.item(i)["shopname"];
id = result.rows.item(i)["id"];
addtime = result.rows.item(i)["addtime"];
html += "<tr><th>"+id+"</th><th>"+shopname+"</th><th>"+addtime+"</th></tr>";
} var con = document.getElementById("content");
con.innerHTML = html;
});
}else{
//创建本地数据表结构
creatTables(MDB,"Shop(id INTEGER UNIQUE,shopname TEXT NOT NULL,addtime TEXT NOT NULL)");
var shopArr1 = [1,'测试'+Math.ceil(Math.random()*100),Math.ceil(Math.random()*10000)]; var shopArr2 = [2,'测试'+Math.ceil(Math.random()*100),Math.ceil(Math.random()*10000)];
//插入数据
dbUtil.insert(MDB,"Shop",shopArr1);
dbUtil.insert(MDB,"Shop",shopArr2); //设置本地存储标示
localData.set('flag',1); dbUtil.query(MDB,"SELECT * FROM Shop",[],function(result){
// alert(result.rows.item(0)["id"]);
var shopname = '';
var id = '';
var addtime = '';
var html = '<tr><th>id</th><th>shopname</th><th>addtime</th></tr>';
for(var i=0,le = result.rows.length;i<le;i++){
shopname = result.rows.item(i)["shopname"];
id = result.rows.item(i)["id"];
addtime = result.rows.item(i)["addtime"];
html += "<tr><th>"+id+"</th><th>"+shopname+"</th><th>"+addtime+"</th></tr>";
} var con = document.getElementById("content");
con.innerHTML = html;
});
} //更新缓存
var btn = document.getElementById('clearBtnHook');
btn.onclick = function(){
//删除本地数据表
dbUtil.droptable(MDB,"Shop");
//取消本地存储标示
localData.remove('flag');
alert('缓存清除成功!');
window.location.reload();
}; </script>
http://www.cnblogs.com/xumingxiang/archive/2012/03/25/2416418.html
WebSQL实例记录的更多相关文章
- ORACLE AWR报告生成过程出现多个实例记录分析
在一次生成AWR报告中,发现在"Instances in this Workload Repository schema"部分,出现了多个实例记录信息(host敏感信息被用host ...
- mongodb导出导入实例记录
mongodb导出导入实例记录 平时很用mongodb,所以用到了,就需要去网上搜索方法,干脆将自己的实际经历记录下来,方便日后使用. # 大致需求 源库:db_name_mongo 源IP:192. ...
- Openstack 使用Centos官方镜像创建实例记录
Openstack 使用Centos官方镜像创建实例记录 准备centos镜像 官方地址:http://cloud.centos.org/centos/7/images 可以看到有各种版本的镜像,我在 ...
- 【填坑纪事】一次用System.nanoTime()填坑System.currentTimeMills()的实例记录
JDK提供了两个方法,System.currentTimeMillis()和System.nanoTime(),这两个方法都可以用来获取表征当前时间的数值.但是如果不仔细辨别这两个方法的差别和联系,在 ...
- postman tests实例记录(还没看,一些常用的)
这段时间准备测试api接口,postman这个工具很是方便,特别是里面的tests的javascript脚本. 记录一下测试接口常用的tests验证的实例. 1.设置环境变量 postman.setE ...
- log4net实现多实例记录
原文地址:实现多个LOG4NET日志记录器实例 本文内容为摘抄,请查看原文. 对于.NET Framework开发者来说,使用Log4Net进行日志记录是非常方便的,通常只要写好配置文件和简单的编码就 ...
- quartz 实例记录
之前介绍过了quartz的一些相关理论知识,感觉上挺简单的,实际动手操作也确实如此,去quartz的官网上把Jar包下载下来以后,会看到它的目录里有例子程序,看完第一个例子觉得还可以,但是看后面两个例 ...
- java--线程认识与实例记录 NO.1
下面的内容都是从java编程思想一书中摘取出来,我认为很有产考价值,并且便于后续使用. 主要内容是记录继承thread和实现runnable接口两种方式的代码用法,及内部类中启用线程的用法. 1.首先 ...
- maven使用实例记录
Maven入门指南① :Maven 快速入门及简单使用Maven入门指南② :Maven 常用命令,手动创建第一个 Maven 项目Maven入门指南③:坐标和依赖Maven入门指南④:仓库 Mave ...
随机推荐
- 基于MINA框架快速开发网络应用程序
1.MINA框架简介 MINA(Multipurpose Infrastructure for Network Applications)是用于开发高性能和高可用性的网络应用程序的基础框架.通过使用M ...
- Spring Boot集成Jasypt安全框架
Jasypt安全框架提供了Spring的集成,主要是实现 PlaceholderConfigurerSupport类或者其子类. 在Sring 3.1之后,则推荐使用PropertySourcesPl ...
- awk工具
简介 awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再 ...
- Ext tabpanel集成第三方charts(echarts、amcharts等)的问题(报getstyle为null的错误)
最近在做ext集成charts的功能,主要是使用tabpanel,将charts集成到tab中,随便切换tab选项就会报错崩溃. 之前演示的时候也发现了该问题,由于在tab项中有加载svg文件的操作, ...
- HDOJ(HDU) 1976 Software Version(简单判断)
Problem Description 相信大家一定有过在网上下载软件而碰到多个不同版本的情况. 一般来说,软件的版本号由三个部分组成,主版本号(Major Version Number),子版本号( ...
- pdf打印乱码问题
问题: 使用Adobe Reader将一份pdf文件通过我的虚拟打印机输出后(输出的是中间文件,等同于EMF文件),查看的时候发现有时候是乱码.最简单的必现步骤: 1.使用Adobe Reader打开 ...
- 《算法问题实战策略》-chaper17-部分和
数组上的一个基本优化——部分和: 对于一定长度的数组,我们想不断访问这个数组上的某个区间的和,我们能够怎么做呢?这里先不去谈一些数据结构在这个问题上的优化处理.首先我们最简单的一个方法就是穷举出所有区 ...
- Java并发编程:线程和进程的创建(转)
Java并发编程:如何创建线程? 在前面一篇文章中已经讲述了在进程和线程的由来,今天就来讲一下在Java中如何创建线程,让线程去执行一个子任务.下面先讲述一下Java中的应用程序和进程相关的概念知识, ...
- 鼠标事件之鼠标滑过事件MOUSEOVER
来源地址:http://www.g2room.com/jquery/index.php?p=example%2Fevent%2Fmouseover.html&n=%E9%BC%A0%E6%A0 ...
- Ubuntu14.04下安装ns2.35
我选择的版本是2.35最新版本,安装环境是Ubuntu 14.04. 1.下载ns2的安装包,这里我选择的是ns-allinone-2.35.tar.gz压缩格式的all in one安装包,all ...