html5使用sqlite数据库的例子
程序代码:
<html> <head> <meta charset="utf-8"> <script> var 数据表 = null; //4个参数分别是 数据库名,版本号,数据库的描述,数据库大小 var 数据库 = openDatabase('MyData','1.0版','我的数据库描述',102400); //初始化页面()方法,用于页面下方表格元素的引用,并且显示所有的数据库记录 function 初始化页面(){ //取得下方的表格元素,并且赋值给全局变量 数据表 = document.getElementById("数据表"); 显示当前数据库当前表格中的所有数据(); }//清除页面表格中的所有数据()方法,用于移除所有的表格中的当前显示数据(它并不去除数据库记录) function 清除页面表格中的所有数据(){ //首先,它将<table>下面的所有子元素全部清除 //所以,这里它对于数据表组件进行遍历 for(var i=数据表.childNodes.length-1;i>=0;i--){ 数据表.removeChild(数据表.childNodes[i]); } //全部去除之后,现在需要显示这个表头部分<tr>里面有多个<th> //创建表头行到文档树中 var 表头的一行= document.createElement('tr'); //表头行的第一个表头 var 第一个表头=document.createElement('th'); //表头行的第二个表头 var 第二个表头=document.createElement('th'); //表头行的第三个表头 var 第三个表头=document.createElement('th'); //设置这3个表头的文本 第一个表头.innerHTML="姓名"; 第二个表头.innerHTML="资料"; 第三个表头.innerHTML="时间"; //将这些表头依次放在表头行中 表头的一行.appendChild(第一个表头); 表头的一行.appendChild(第二个表头); 表头的一行.appendChild(第三个表头); //将这个新创建的表头行挂到表格中 数据表.appendChild(表头的一行); } //构建指定数据库行的数据对应的HTML文本。传入参数:数据库结果集中的某一行记录 function 显示数据(数据行){ //构建一个表行用于取得当前所要的信息 var 表格数据的一行= document.createElement('tr'); //创建第一列,这一列是姓名 var 第一个数据=document.createElement('td'); //填充第一列的信息为该行的姓名 第一个数据.innerHTML=数据行.姓名; //创建第二列,这一列是留言 var 第二个数据=document.createElement('td'); //填充第一列的信息为该行的message 第二个数据.innerHTML=数据行.信息; //创建第三列,这一列是日期 var 第三个数据=document.createElement('td'); //创建一个日期对象 var 日期 = new Date(); 日期.setTime(数据行.时间); //将日期的标准形式和国际化日期形式分别设置给当前列 第三个数据.innerHTML=日期.toLocaleString()+" "+日期.toLocaleTimeString(); //吧这三列挂到当前行中 表格数据的一行.appendChild(第一个数据); 表格数据的一行.appendChild(第二个数据); 表格数据的一行.appendChild(第三个数据); //让这个表格在后面加上这一行 数据表.appendChild(表格数据的一行); } //这个函数用于显示所有的行到表格中,这些行是从数据库中拿出来的 function 显示当前数据库当前表格中的所有数据(){ //开启SQLite数据库事务,它用一个回调函数作为参数表明要执行的语句 数据库.transaction(function(数据库事务){ //首先它创建一个数据库表,里面有3个字段 数据库事务.executeSql('CREATE TABLE IF NOT EXISTS 我的数据(姓名,信息,时间)',[]); //创建一个查询语句用来查询数据库表的所有记录(这个由于是所有查询,所以不需要预编译语句和参数 (第二个参数)) //然后定义了一个回调函数,表明对于结果集的处理 数据库事务.executeSql('SELECT * FROM 我的数据',[],function(数据库事务,查询结果集){ //对于结果集,首先,在获取它之前移除页面上的<table>的所有数据 清除页面表格中的所有数据(); //遍历结果集,对于每一行,依次调用显示数据来在table上创建对于的html文本 for(var i=0;i<查询结果集.rows.length;i++){ //对于item(i),也就是某一行记录,我们显示其内容到页面的表格中(构建对应的HTML片断) 显示数据(查询结果集.rows.item(i)); } }); } ); } //这个函数用于添加一条记录到数据库中,这些信息有些是从页面获得的,有些是系统生成的。 function 添加数据(姓名,信息,时间){ //开启一个数据库事务 //回调函数是一个有参数的插入语句,可以看到我们插入到表我的数据中,插入的内容也就是参数传递进来的内容 数据库.transaction(function(数据库事务){ //插入的语句是个模板语句 //插入成功的回调就是在控制台上输入一行日志 数据库事务.executeSql('INSERT INTO 我的数据 VALUES(?,?,?)' , [姓名,信息,时间],function(数据库事务,查询结果集){ console.log("成功保存数据!"); }, //插入失败的回调就是在控制台上输入一行错误日志 function(数据库事务,error){ console.log(error.source+"::"+error.message); }); } ); } //保存用户的当前输入,这个是作为点击页面上”保存“按钮的事件处理函数 function 保存数据到数据库中(){ //从HTML页面中取得2个输入框的文本 var 姓名=document.getElementById('姓名').value; var 信息=document.getElementById('信息').value; //得到当前的系统时间 var 时间= new Date().getTime(); //将用户名,用户信息,当前时间存到数据库中 添加数据(姓名,信息,时间); 显示当前数据库当前表格中的所有数据(); } </script> </head> <body onload="初始化页面();"> <h1>使用HTML5本地数据库DEMO</h1> <table> <tr><td>姓名:</td><td><input type="text" id="姓名"></td></tr> <tr><td>资料:</td><td><input type="text" id="信息"></td></tr> <tr> <td></td> <td><input type="button" value="保存" onclick="保存数据到数据库中();"></td> </tr> </table> <hr> <table id="数据表" border="1"></table> </body>