H5 浏览器存储 websql 使用详情及实例
h5 的浏览器客户端存储可以使用websql存储引擎,现在 chrome和safari支持:
Html5数据库API是以一个独立规范形式出现,它包含三个核心方法:
1、openDatabase:这个方法使用现有数据库或创建新数据库创建数据库对象。
2、transaction:这个方法允许我们根据情况控制事务提交或回滚。
3、executeSql:这个方法用于执行真实的SQL查询。
接下来我们实现用websql实现一个客户端数据库存储 -- 留言板系统:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body onload="init()">
<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>
<script>
/**
* Created by cleey.com
*/
var datatable = null;
var db = openDatabase("MyData","","My Database",1024*100);
function init(){
datatable = document.getElementById("datatable");
showAllData();
}
// click事件
function saveData(){
var name = document.getElementById("name").value;
var memo = document.getElementById("memo").value;
var time = new Date().getTime();
addData(name,memo,time);
showAllData();
}
// 插入本地数据
function addData(name,message,time){
db.transaction(function(tx){
tx.executeSql("INSERT INTO MyData VALUES(?,?,?)",
[name,message,time],
function(tx,rs){ alert("留言成功"); },
function(tx,error){ alert(error.source+"::"+error.message); }
)
})
}
// 获取所有浏览数据
function showAllData(){
db.transaction(function(tx){
// tx.executeSql("DROP TABLE IF EXISTS MyData");
tx.executeSql("CREATE TABLE IF NOT EXISTS MyData(name TEXT,message TEXT,time INTEGER)");
tx.executeSql("SELECT * FROM MyData",[],function(tx,rs){
removeAllData();
for (var i = 0; i < rs.rows.length; i++){
showData(rs.rows.item(i));
}
})
})
}
// 删除表格原有内容
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);
}
</script>
</body>
</html>
结果如下:

如果使用chrome浏览器可以看到,数据的存储位置:
