HTML5 本地数据库

     HTML5大大丰富了客户端本地可以存储的内容,添加了很多功能将原本必须要保存在服务器上的数据转为保存在客户端本地,从而大大提高了Web应用程序性能,减轻了服务器的负担,使用Web时代重新回到了“客户端为重、服务器端为轻”的时代。在HTML5中,可以像访问本地文件那样轻松地对内置数据库进行直接访问。

      HTML5中内置了两种本地数据库,一种为SQLLite,一种为indexedDB。 

    

(1)创建访问数据库对象

   /*不存在时创建数据库*/
  /*  参数:数据库名称,版本号,数据库描述,数据库的大小*/
     var db = openDatabase("mydb","1.0","my test db",1024*100);
 
(2)使用事务处理
   
   //事务
    db.transaction(function(tx){
     
    tx.executeSql("");
    /*参数: 执行的sql语句,sql参数数组,success回调函数,error回调函数*/
    transaction.executeSql("", [],function(){},function(){});
    //rows属性  rows.length; rows[index]
});
(3)使用数据库进行Web留言
     
<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <!--1.创建访问数据的对象
2.使用事务处理-->
    <script type="text/javascript" src="sql2.js"></script>
</head>


<body οnlοad="init()">
<table>
    <tr>
        <td>姓名:</td>
        <td><input  type="text" name="name" id="name"/> </td>
    </tr>

    <tr>
        <td>留言:</td>
        <td><input type="text" name="say" id="say" style="width:500px;"/> </td>
    </tr>

    <tr>
        <td></td>
        <td><input  type="button" value="保存" οnclick="saveData()"/> </td>
    </tr>
</table>

<hr/>
 <table border="1" id="datatable">

 </table>

<p id="msg"></p>
</body>
</html>

sql2.js
/**
 * Created by Administrator on 2017-03-20.
 */

var datatable = null;
/*不存在时创建数据库*/
/*  参数:数据库名称,版本号,数据库描述,数据库的大小*/
var db = openDatabase("MyData", "", "mydatatable description", 1024 * 100);

//(1)初始化数据
function init() {
    datatable = document.getElementById("datatable");
    //显示所有的
    showDataAll();
}

//(2)移除所有的数据
function removeAll() {
    //遍历
    for (var i = datatable.childNodes.length - 1; i >= 0; i--) {
        datatable.removeChild(datatable.childNodes[i]); //移除每一个孩子
    }
    //自定义的tr,th
    var tr = document.createElement("tr");
    var th1 = document.createElement("th");
    var th2 = document.createElement("th");
    var th3 = document.createElement("th");

    //添加th1,2,3的内容
    th1.innerHTML = "姓名";
    th2.innerHTML = "留言";
    th3.innerHTML = "时间";

    //追加数据
    tr.appendChild(th1);
    tr.appendChild(th2);
    tr.appendChild(th3);
    //添加到表格中
    datatable.appendChild(tr);
}

//显示数据
function showData(row) {
    //自定义tr,td1,td2,td3
    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 showDataAll(){
    //事务
    db.transaction(function (tx) {
        /*参数: CRUD,sql数组,success回调函数,error回调函数*/
        tx.executeSql("create table if not exists student(name TEXT,message TEXT,time INTEGER)",[]);

        //查询语句
        tx.executeSql("select * from student",[],function(tx,rs){
            removeAll(); //移除所有的数据
            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 student values(?,?,?)",[name,message,time],function(tx,rs){
               // alert("ok");
                document.getElementById("msg").innerHTML="ok";
            },
            function(tx,error){
               // alert(error.source+"::"+error.message);
                document.getElementById("msg").innerHTML=error.source+"::"+error.message;
            }
        );
    });
}

//保存数据
function saveData(){
    var name = document.getElementById("name").value;
    var message = document.getElementById("say").value;
    var time = new Date().getTime();
    // alert(name+"--->"+message);
    //调用方法
    addData(name,message,time);

    //显示所有的
    showDataAll();
}

效果:

再次打开数据时,还是存在的,保存在本地的数据库中了!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值