webStorage

使用cookie储存数据的缺点:

  1. cookies的大小被限制在4KB
  2. 发送cookies时浪费一部分带宽。
  3. 操作cookies复杂。

html5提供了一种在客户端本地保存数据的功能,–

Web Storeage功能。

web Storage分为两种:

SessionStorage(保存在session中,临时保存)

保存数据:sessionStorage.setItem(key,value);
读取数据:variable = sessionStorage.getItem(key);

localStorage(保存在本地磁盘)

保存数据:localStorage.setItem(key,value);
读取数据:variable = localStorage.getItem(key);

本地数据库:
HTML5中内置了一个可以使用sql语言来访问的数据库,这种不需要储存在服务器上的文件型数据库被称为“SQLLite”.
步骤:
1. 创建访问数据库的对象。
var db = openDatabase(‘mydb’,’1.0’,’Test DB’,2*1024*1024);
参数依次为:数据库名,版本号,数据库的描述,数据库大小。
2. 使用事务处理
db.transaction(function(tx){
tx.executeSql(‘create table if not exists logs(id unique,Log)’);
});
使用回调函数作为参数,在这个函数中执行访问数据库的语句。

用executeSql执行查询
transaction.executeSql(sqlquery,[],dataHandler,errorHandler);
四个参数依次为需要执行的sql语句,sql语句中所有使用到的参数的数组,执行成功时的回调函数,出错时的回调函数。
transaction.executeSql(”update peopel set age=? where name = ?;”,[age,name]);
function dataHandler(transaction,results){}
function errorHandler(transaction,errmsg){}

执行成功后有回调函数有个结果集对象,此对象有个rows属性,保存了查询到的每条数据,条数可用rows.length获取。rows[index]或rows.Item([index])的形式取出每条数据.goole Chrome5不支持rows.Item(index)。
完整案例:

<!DOCTYPE html>   
<head>   
<meta charset="UTF-8">  
<title>使用数据库实现Web留言本</title>  
<script type="text/javascript">
var datatable = null;  
var db = openDatabase('MyData', '', 'My Database', 102400);  
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');  
    var th3 = document.createElement('th');  
    th1.innerHTML = '姓名';  
    th2.innerHTML = '留言';  
    th3.innerHTML = '时间';  
    tr.appendChild(th1);  
    tr.appendChild(th2);  
    tr.appendChild(th3);  
    datatable.appendChild(tr);  
}  
function showData(row) 
{  
    var tr = document.createElement('tr');  
    var td1 = document.createElement('td');  
    td1.innerHTML = row.name;  
    var td2 = document.createElement('td');  
    td2.innerHTML = row.message;  
    var td3 = document.createElement('td');  
    var t = new Date();  
    t.setTime(row.time);  
    td3.innerHTML=t.toLocaleDateString()+" "+t.toLocaleTimeString();  
    tr.appendChild(td1);  
    tr.appendChild(td2);  
    tr.appendChild(td3);  
    datatable.appendChild(tr);    
}  
function showAllData() 
{  
    db.transaction(function(tx) 
    {  
        tx.executeSql('CREATE TABLE IF NOT EXISTS MsgData(name TEXT, message TEXT, time INTEGER)',[]);  
        tx.executeSql('SELECT * FROM MsgData', [], function(tx, rs) 
        {  
            removeAllData();  
            for(var i = 0; i < rs.rows.length; i++) 
            {  
                showData(rs.rows.item(i));  
            }  
        });  
    });  
}  
function addData(name, message, time) 
{  

    db.transaction(function(tx) 
    {  
        tx.executeSql('INSERT INTO MsgData VALUES(?, ?, ?)',[name, message, time],function(tx, rs) 
        {  
            alert("成功保存数据!");  
        },  
        function(tx, error) 
        {  
            alert(error.source + "::" + error.message);  
        });  
    });  
}  
function saveData()
{  
    var name = document.getElementById('name').value;  
    var memo = document.getElementById('memo').value;  
    var time = new Date().getTime();  
    addData(name,memo,time);  
    showAllData();  
}

</script>  
</head>  
<body onload="init();">  
<h1>使用数据库实现Web留言本</h1>  
<table>  
    <tr><td>姓名:</td><td><input type="text" id="name"></td></tr>  
    <tr><td>留言:</td><td><input type="text" id="memo"></td></tr>  
    <tr>
<td></td>
<td><input type="button" value="保存" onclick="saveData();"></td>
</tr>  
</table>  
<hr>  
<table id="datatable" border="1"></table>  
<p id="msg"></p>  
</body>  
</html>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值