html5学习笔记(13)

本地数据库:

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的错误。





评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值