• html5与css3权威指南读书笔记第七章 本地存储 Amy


    本章有两个重要内容WebStorage和本地数据库

    一、WebStorage

    1,WebStorage存储机制是对html4的cookies的一个改善,那么cookies存在哪些问题呢?

      cookies大小限制为4KB;cookies随http事务一起发送,浪费一部分发送cookies时使用的带宽;要正确操作cookies很复杂

    2,WebStorage分为两种;sessionStorage和localStorage

      sessionStorage localStorage
    概念 将数据保存到session对象中(session是用来保存用户进入某网站到离开这段时间里要保存的数据) 将数据存储在客户端本地的设备上
    保存数据的区别 临时保存,浏览器关闭就没有了 永久保存,即使浏览器关闭,下次访问该网站仍然可以使用,数据保存按照不同的浏览器分别进行

    存取数据方法

    setItem

    getItem

    sessionStorage.setItem(key,value)

    sessionStorage.getItem(key)

    localStorage.setItem(key,value)

    localStorage.getItem(key)

    存取数据方法

    属性以及中括号

    sessionStorage.keyName=”value“

     

    var value=sessionStorage.keyName

    sessionStorage[keyName]=”value“

    var value=sessionStorage[keyName]

     

    localStorage.keyName=”value“

    var value=localStorage.keyName

    localStorage[keyName]=”value“

    var value=localStorage[keyName]

    根据索引获取keyName的方法

    sessionStorage.key(i)

    localStorage.key(i)
    清除数据的方法

    sessionStorage.clear()

    localStorage.clear()

    浏览器支持情况

     IE7及以下不支持

    IE7及以下不支持
     移动数据的方法

    sessionStorage.removeItem(keyName);

    localStorage.removeItem(keyName);

       

    <div id="show"></div>
    <input type="text" id="input_01" value="1" />
    <input type="text" id="input_02" value="2" />
    <input type="button" value="show" onclick="show()"/>
    <input type="button" value="remove" onclick="remove()"/>
    <input type="button"  value="clear" onclick="data_clear()"/>
      var key_01=document.getElementById("input_01");
        var key_02=document.getElementById("input_02");
        var show_div=document.getElementById("show");
        sessionStorage.setItem("key_01",key_01.value);
        sessionStorage.setItem("key_02",key_02.value);
        function show(){
            for(var i=0;i<sessionStorage.length;i++){
                var key=sessionStorage.key(i);
                var value=sessionStorage.getItem(key);
                show_div.innerHTML+=key+": "+value+"  ";
            }       
        }
        function data_clear(){
            sessionStorage.clear();
            alert(sessionStorage.length);
        }
        function remove(){
            sessionStorage.removeItem('key_01');
            alert(sessionStorage.length);
        }

    二、本地数据库(chrome支持,firefox和ie不支持)

    html5中内置了一个可以通过SQL语言来访问的数据库,可以像访问本地文件一样轻松地对内置数据库进行直接访问,被称为SQLLite的文件型SQL数据库

    1,使用openDatabase方法创建一个访问数据库的对象

    var db=openDatabase('数据库名称','版本号','数据库描述','数据库的大小');
    var db=openDatabase('mydb','1.0','my database','2*1024*1024');

    2,调用transaction方法,执行事务处理

    db.transaction(function(tx){});

    3,transaction方法使用了一个回调函数,transaction对象的executeSql方法

        

    db.transaction(function(tx){
        tx.executeSql('sql语句','[sql语句中用?表示的参数]','sql语句执行成功后的回调函数','sql语句执行失败后的回调函数')
    });
    db.transaction(function(tx){
        tx.executeSql('create table if not exists myTable(name TEXT,age INTEGER)','[]');  
    });//创建一个表格
     db.transaction(function(tx){
         tx.executeSql('select * from myTable',[],function(tx,successResult){//检索操作成功后,将结果放在参数successResult中
            for(var i=0;i<successResult.rows.length;i++){
                rs.rows.item(i);//结果中的一条记录
            }
        });
    });//检索
    db.transaction(function(tx){
         tx.executeSql(insert into myTable values(?,?)',[name,age],function(tx,successResult){alert("成功增加数据!");
              },function(tx,error){
          alert("保存数据出错:"+error.message);
      });
    });//保存数据
    db.transaction(function(tx){
        tx.executeSql('sql语句',[sql语句中用?表示的参数],function(tx,rs){},function(tx,error){})
    });
    <body onload='init();'>
        <table>
            <tr><td>name:</td><td><input type="text" id="name"/></td></tr>
            <tr><td>age:</td><td><input type="text" id="age"/></td></tr>
            <tr><td></td><td><input type="button" onclick="saveData();" value="save"/></td></tr>
        </table>
        <table id="dataTable"></table>
    </body>
    var datatable=null;
        var db = openDatabase('my','1.0','我的数据库','2*1024*1024');
        function init(){
            datatable=document.getElementById('dataTable');        
            showAllData();
        }        
        function removeAllData(){
            for(var i = datatable.childNodes.length-1;i>=0;i--){
                datatable.removeChild(datatable.childNodes[i]);
            }
            var tr=document.createElement('tr');
            var th1=document.createElement('th');
            var th2=document.createElement('th');
            th1.innerHTML='name';
            th2.innerHTML='age';    
            tr.appendChild(th1);
            tr.appendChild(th2);
            datatable.appendChild(tr);
        }
        function showData(row){
            var tr=document.createElement('tr');
            var td1=document.createElement('td');
            var td2=document.createElement('td');
            td1.innerHTML=row.name;
            td2.innerHTML=row.age;
            tr.appendChild(td1);
            tr.appendChild(td2);
            datatable.appendChild(tr); 
        }
        function showAllData(){
            db.transaction(function(tx){
                tx.executeSql("CREATE TABLE IF NOT EXISTS myTable(name TEXT,age INTEGER)",[]);
                tx.executeSql("SELECT * FROM myTable",[],function(tx,successResult){
                    removeAllData();
                    for(var i=0;i<successResult.rows.length;i++){
                        showData(successResult.rows.item(i));
                    }
                },function(tx,error){
                    alert("检索时出错:"+error.source);
                });
            });
        }
        function addData(name,age){
            db.transaction(function(tx){
                tx.executeSql("insert into myTable values(?,?)",[name,age],function(tx,successResult){
                    alert("添加成功");
                },function(tx,error){
                    alert("添加数据时出错:"+error.source);
                });
            });
        }function saveData(name,age){
            var name=document.getElementById('name').value;
            var age=document.getElementById("age").value;
            addData(name,age);
            showAllData();
        }
  • 相关阅读:
    Leetcode:linked_list_cycle
    关于Go语言共享内存操作的小实例
    程序猿如同妓女
    算法——排序算法个人总结
    CentOS 6.4下安装和配置Samba 第2页_服务器应用_Linux公社-Linux系统门户网站
    解决fedora samba在windows下无权限访问的问题
    基于samba实现win7与linux之间共享文件_阳仔_新浪博客
    增加samba用户提示Failed to add entry for user
    Ubuntu+Win7+Samba实现文件共享_Linux教程_Linux公社-Linux系统门户网站
    Mycat 月分片方法
  • 原文地址:https://www.cnblogs.com/amy2011/p/2973647.html
Copyright © 2020-2023  润新知