• 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

  • 相关阅读:
    javascript转换时间戳
    解决 Out of range value adjusted for column 'ID' at row 1
    解决 ERROR in native method: JDWP No transports initialized, jvmtiError=AGENT_ERROR_TRANSPORT_INIT(197)
    解决 nfs挂载错误wrong fs type, bad option, bad superblock
    修改浏览器Cookie
    elasticsearch备忘
    itextpdf 备忘
    重命名和移动
    win10 教育版本变专业版本
    解决com.intellij.openapi.project.IndexNotReadyException: Please change caller according to com.intellij.
  • 原文地址:https://www.cnblogs.com/phpfensi/p/4410277.html
Copyright © 2020-2023  润新知