本地数据库:
html5中,内置类两种数据库,一种为SQLLite, 一种为indexedDB
数据库操作模板:
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
</head>
<body>
<!--
1,创建访问数据库的对象:
2. 使用事务处理
-->
<script>
// 创建数据库, openDatabase(数据库名, 版本号,数据库描述, 数据库大小)
var db = openDatabase("mydb","1.0","test db",1024*100);
//事务处理
db.transaction(function(tx)){
tx.executeSql();
}
// transaction(执行数据库的语句, sql语句中使用参数的数组,
// 成功执行sql语句使用的回调函数, sql出错时调用的回调函数)
transaction("",[], function dataHander(){}, function errorHander(){});
//查询结果 rows.length获取 rows[index]
</script>
</body>
</html>
使用数据库实现web留言板:
.html
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
<script src="dbwebjs.js"></script>
</head>
<body οnlοad="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="save" οnclick="saveData()"></td>
</tr>
</table>
<hr>
<table id="datatable" border="1">
<p id="msg"></p>
</table>
</body>
</html>
.js:
/**
* Created by Sindy on 2015/8/13.
*/
var datatable = null;
//访问数据库对象;
var db = openDatabase("MyData", "", "My Database", 1024*100);
if(!db){
alert("创建数据库失败");
}else{
alert("创建成功");
}
//初始化函数
function init(){
datatable = document.getElementById("datatable");
showAllDate();
}
//针对所有数据进行移除处理的函数;
function removeAllData(){
for(var i=datatable.childNodes.length-1; i>=0;i--){
datatable.removeChild(datatable.childNodes[i]);
}
//向table中添加
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");
td1.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 showAllDate(){
//查询数据库
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);
showAllDate();
}
注意,很多浏览器已经不支持Web SQL Database了,Web SQL Database规范已经被IndexedDB替代了。因此,测试的时候可能会出现ReferenceError: openDatabase is not defined的错误。