html5本地数据库操作

本文详细介绍了如何使用HTML5的openDatabase API与SQLite数据库进行交互,包括创建数据库、执行SQL语句、添加数据等基本操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

html如何操作“SQLLITE”文件型SQL数据库

1. 创建访问数据库的对象

var db=openDatabase("mydb",'1.0','test db',102400)

第一个参数为 数据库名

第二个参数为 版本号

第三个参数为 数据库描述

第四个参数 数据库的大小

2. 使用事务处理

db.transaction(function(tx){

tx.executeSql(sqlQuery,[],dataHandler,errorHandler);

});

tx.executeSql(sqlQuery,[],dataHandler,errorHandler)

第一个参数是要执行的sql语句

第二个参数为sql语句中所使用的参数数组

第三个参数是执行sql成功时所调用的回调函数

第四个参数是执行sql失败时所调用的回调函数

[javascript] 
  1. function addData(name,email,phone){  
  2.         db.transaction(function(tx){  
  3.             tx.executeSql(' insert into msgData values(?,?,?)',[name,email,phone],function(tx,rs){  
  4.                 alert("保存成功!");  
  5.                 },function(tx,error){  
  6.                     alert(error.message);  
  7.                     });  
  8.             });  
  9.         }  

sqllite数据库操作的例子


[javascript] 
  1. //这个是下方的表格元素   
  2.  var datatable = null;   
  3.     
  4.  //创建一个数据库对象   
  5.  //4个参数分别是 数据库名,版本号,数据库的描述,数据库大小   
  6.  var db = openDatabase('MyData','','My Database',102400);   
  7.     
  8.  //init()方法,用于页面下方表格元素的引用,并且显示所有的数据库记录   
  9.  function init(){   
  10.     //取得下方的表格元素,并且赋值给全局变量   
  11.     datatable = document.getElementById("datatable");   
  12.        
  13.     //显示所有已经在数据库中存储的记录   
  14.     showAllData();   
  15.  }   
  16.     
  17.  //removeAllData()方法,用于移除所有的表格中的当前显示数据(它并不去除数据库记录)   
  18.  function removeAllData(){   
  19.     //首先,它将<table>下面的所有子元素全部清除   
  20.     //所以,这里它对于datatable组件进行遍历   
  21.     for(var i=datatable.childNodes.length-1;i>=0;i--){   
  22.         datatable.removeChild(datatable.childNodes(i));   
  23.     }   
  24.        
  25.     //全部去除之后,现在需要显示这个表头部分<tr>里面有多个<th>   
  26.     //创建表头行到文档树中   
  27.     var tr= document.createElement('tr');   
  28.     //表头行的第一个表头   
  29.     var th1=document.createElement('th');   
  30.     //表头行的第二个表头   
  31.     var th2=document.createElement('th');   
  32.     //表头行的第三个表头   
  33.     var th3=document.createElement('th');   
  34.     //设置这3个表头的文本   
  35.     th1.innerHTML="姓名";   
  36.     th2.innerHTML="资料";   
  37.     th3.innerHTML="时间";   
  38.     //将这些表头依次放在表头行中   
  39.     tr.appendChild(th1);   
  40.     tr.appendChild(th2);   
  41.     tr.appendChild(th3);   
  42.     //将这个新创建的表头行挂到表格中   
  43.     datatable.appendChild(tr);   
  44.  }   
  45.     
  46.  //构建指定数据库行的数据对应的HTML文本。传入参数:数据库结果集中的某一行记录   
  47.  function showData(row){   
  48.      //构建一个表行用于取得当前所要的信息   
  49.      var tr= document.createElement('tr');   
  50.      //创建第一列,这一列是姓名   
  51.      var td1=document.createElement('td');   
  52.      //填充第一列的信息为该行的name   
  53.      td1.innerHTML=row.name;   
  54.      //创建第二列,这一列是留言   
  55.      var td2=document.createElement('td');   
  56.      //填充第一列的信息为该行的message   
  57.      td2.innerHTML=row.info;   
  58.     //创建第三列,这一列是日期   
  59.      var td3=document.createElement('td');   
  60.      //创建一个日期对象   
  61.      var t = new Date();   
  62.      t.setTime(row.time);   
  63.      //将日期的标准形式和国际化日期形式分别设置给当前列   
  64.      td3.innerHTML=t.toLocaleString()+" "+t.toLocaleTimeString();   
  65.      //吧这三列挂到当前行中   
  66.      tr.appendChild(td1);   
  67.      tr.appendChild(td2);   
  68.      tr.appendChild(td3);   
  69.      //让这个表格在后面加上这一行   
  70.      datatable.appendChild(tr);   
  71.  }   
  72.     
  73.  //这个函数用于显示所有的行到表格中,这些行是从数据库中拿出来的   
  74.  function showAllData(){   
  75.     //开启SQLite数据库事务,它用一个回调函数作为参数表明要执行的语句   
  76.     db.transaction(function(tx){   
  77.         //首先它创建一个数据库表,里面有3个字段   
  78.         tx.executeSql('CREATE TABLE IF NOT EXISTS InfoData(name TEXT,info TEXT,time INTEGER)',[]);   
  79.         //创建一个查询语句用来查询数据库表的所有记录(这个由于是所有查询,所以不需要预编译语句和参数 (第二个参数))   
  80.         //然后定义了一个回调函数,表明对于结果集的处理   
  81.         tx.executeSql('SELECT * FROM InfoData',[],function(tx,rs){   
  82.                
  83.             //对于结果集,首先,在获取它之前移除页面上的<table>的所有数据   
  84.             removeAllData();   
  85.             //遍历结果集,对于每一行,依次调用showData来在table上创建对于的html文本   
  86.             for(var i=0;i<rs.rows.length;i++){   
  87.                 //对于item(i),也就是某一行记录,我们显示其内容到页面的表格中(构建对应的HTML片断)   
  88.                 showData(rs.rows.item(i));   
  89.             }   
  90.         });   
  91.     }   
  92.     
  93.     );   
  94.  }   
  95.     
  96.  //这个函数用于添加一条记录到数据库中,这些信息有些是从页面获得的,有些是系统生成的。   
  97.  function addData(name,info,time){   
  98.     //开启一个数据库事务   
  99.     //回调函数是一个有参数的插入语句,可以看到我们插入到表InfoData中,插入的内容也就是参数传递进来的内容   
  100.     db.transaction(function(tx){   
  101.            
  102.         //插入的语句是个模板语句   
  103.         //插入成功的回调就是在控制台上输入一行日志   
  104.         tx.executeSql('INSERT INTO InfoData VALUES(?,?,?)' , [name,info,time],function(tx,rs){   
  105.             console.log("成功保存数据!");   
  106.         },   
  107.         //插入失败的回调就是在控制台上输入一行错误日志   
  108.         function(tx,error){   
  109.             console.log(error.source+"::"+error.message);   
  110.         });   
  111.     }   
  112.        
  113.     );   
  114.  }   
  115.     
  116.  //保存用户的当前输入,这个是作为点击页面上”保存“按钮的事件处理函数   
  117.  function saveData(){   
  118.     //从HTML页面中取得2个输入框的文本   
  119.     var name=document.getElementById('name').value;   
  120.     var info=document.getElementById('info').value;   
  121.     //得到当前的系统时间   
  122.     var time= new Date().getTime();   
  123.     //将用户名,用户信息,当前时间存到数据库中   
  124.     addData(name,info,time);   
  125.     //更新下方<p id="msg">的表格显示   
  126.     showAllData();   
  127.  }   

html 代码:

[html] 
  1. <!DOCTYPE html>   
  2. <head>   
  3. <meta charset="UTF-8">   
  4. <title>使用HTML5本地数据库DEMO</title>   
  5. <script type="text/javascript" src="js/operateDB.js"></</script>   
  6. </head>   
  7.    
  8. <body onload="init();">   
  9. <h1>使用HTML5本地数据库DEMO</h1>   
  10. <table>   
  11.     <tr><td>姓名:</td><td><input type="text" id="name"></td></tr>   
  12.     <tr><td>资料:</td><td><input type="text" id="info"></td></tr>   
  13.     <tr>   
  14.         <td></td>   
  15.         <td><input type="button" value="保存" onclick="saveData();"></td>   
  16.     </tr>   
  17. </table>   
  18. <hr>   
  19. <table id="datatable" border="1"></table>   
  20. <p id="msg"></p>   
  21. </body>   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值