当前位置:Gxlcms > 数据库问题 > HTML5 SQLLite初体验

HTML5 SQLLite初体验

时间:2021-07-01 10:21:17 帮助过:6人阅读

DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>本地数据库</title> </head> <body> <h1>使用数据库实现Web留言本</h1> <table border="0" cellspacing="1" cellpadding="1"> <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" id="save" value="保存"/></td> </tr> </table> <hr /> <table border="1" id="datatable" cellspacing="0" cellpadding="0"></table> <p id="msg"></p> <script src="js/database.js" type="text/javascript" charset="utf-8"></script> </body> </html>
//文档加载完成执行init方法;
window.onload = init;
var datatable = null;

//创建本地数据库,获取数据库访问对象。
var db = openDatabase(‘MyData‘, ‘‘, ‘My DataBase‘, 102400);

//初始化
function init(){
    
    datatable = document.getElementById(‘datatable‘);
    showAllData();
    
}

//清空表格数据
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);
}

//显示所有数据
function showAllData(){
    
    //创建事务,获取事务管理对象。
    db.transaction(function(tx){
        /**
         * 执行sql语句, 创建表
         * executeSq()函数    参数如下
         *                     sqlQuery        数据库查询语句
         *                     []                参数数组,替换SQL语句中的?占位符。
         *                     dataHandler        成功后执行的回调函数(可选)
         *                     errorHandler    失败后执行的回调函数(可选)
         */
        tx.executeSql(‘CREATE TABLE IF NOT EXISTS MsgData(name TEXT, message TEXT, time INTEGER)‘, [], function(tx, rs){
            
        }, function(tx, error){
            alert(‘错误‘)
        });
        
        //执行SQL语句,查询MsgData 表中的所有数据。
        tx.executeSql(‘SELECT * FROM MsgData‘, [], function(tx, rs){
            
            //这里是SQL执行成功后调用的回调函数。
            removeAllData();
            
            for(var i = 0; i < rs.rows.length; i++){
                showData(rs.rows.item(i));
            }
            
        }, function(tx, error){
            
            alert(error.source + " :: " + error.message);
            console.log(error.source + " :: " + error.message);
            
        });
    });
}

//添加数据
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);
            console.log(error.source + " :: " + error.message);
            
        });
    })
    
}

document.getElementById(‘save‘).addEventListener(‘click‘, function(){
    
    var name = document.getElementById(‘name‘).value;
    var memo = document.getElementById(‘memo‘).value;
    var time = new Date().getTime();
    addData(name, memo, time);
    showAllData();
    
}, false);

 

HTML5 SQLLite初体验

标签:

人气教程排行