火狐和ie是不支持的
html5本地數據庫(web sql Darabase)核心方法 openDatabase transaction executeSql小解:
1 openDatabase 能使用現有數據庫或創建新數據庫創建數據庫對象。
2 transaction 能訪問數據庫
3 executeSql 執行SQl查詢 (例如獲取數據,將傳進來的數據保存在數據庫中)
<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> <input type="button" value="保存" onclick="saveData();"/></td> </tr> </table> <hr/> <table id="datatable" border="1"> </table> <p id="msg"> </p>
<script>
var datatable =null;
var db=openDatabase('MyData' , '','My Database',102400);
if (!db) {
console.log("數據庫創建失敗!");
} else {
console.log("數據庫創建成功!");
}
function init(){
datatable = document.getElementById("datatable");
showAllData();
}
/*
//removeChild() 方法指定元素的某個指定的子節點。
// 以 Node 對象返回被刪除的節點,如果節點不存在則返回 null。
<ul id="myList"><li>Coffee</li><li>Tea</li><li>Milk</li></ul>
<button onclick="myFunction()">刪除</button>
function myFunction()
{
var list=document.getElementById("myList");
for(var i=list.childNodes.length-1;i>=0;i--){
list.removeChild(list.childNodes[i]);
}
}*/
function removeAllData(){
//這就是用來刪除項目用的
for(var i= datatable.childNodes.length-1;i>=0;i--){
datatable.removeChild(datatable.childNodes[i]);//i是從0開始
}
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){
//debugger;
tx.executeSql('CREATE TABLE IF NOT EXISTS MsgData(name TEXT,message TEXT, time INTEGER)',[],
function(tx,rs){ console.log('創建MsgData表成功'); },
function(tx, error){ console.log('創建MsgData表失敗:' + error.message);
}
);//在數據庫中創建一個數據表
tx.executeSql("SELECT * from MsgData",[],function(tx,rs){
//debugger;//從MagData數據表中獲取全部數據,成功之后獲取回調函數
//console.log(rs.rows.length);
removeAllData();
for(var i =0;i<rs.rows.length;i++){//rs.rows是獲取的所有行
showData(rs.rows.item(i));
}
})
})
}
function addData(name,message,time){
db.transaction(function(tx){//這是訪問數據庫的transaction方法
tx.executeSql('INSERT INTO MsgData VALUES(?,?,?)',[name,message,time],function(tx,rs){//成功時執行的回調函數。返回兩個參數:tx和執行的結果。
console.log("ok");
},function(tx,error){
console.log("查詢失敗"+"::"+error.message+"2")
})
})
}
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>
