html5本地數據庫操作

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>   
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章