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失敗時所調用的回調函數
- function addData(name,email,phone){
- db.transaction(function(tx){
- tx.executeSql(' insert into msgData values(?,?,?)',[name,email,phone],function(tx,rs){
- alert("保存成功!");
- },function(tx,error){
- alert(error.message);
- });
- });
- }
sqllite數據庫操作的例子
- //這個是下方的表格元素
- var datatable = null;
- //創建一個數據庫對象
- //4個參數分別是 數據庫名,版本號,數據庫的描述,數據庫大小
- var db = openDatabase('MyData','','My Database',102400);
- //init()方法,用於頁面下方表格元素的引用,並且顯示所有的數據庫記錄
- function init(){
- //取得下方的表格元素,並且賦值給全局變量
- datatable = document.getElementById("datatable");
- //顯示所有已經在數據庫中存儲的記錄
- showAllData();
- }
- //removeAllData()方法,用於移除所有的表格中的當前顯示數據(它並不去除數據庫記錄)
- function removeAllData(){
- //首先,它將<table>下面的所有子元素全部清除
- //所以,這裏它對於datatable組件進行遍歷
- 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');
- //設置這3個表頭的文本
- th1.innerHTML="姓名";
- th2.innerHTML="資料";
- th3.innerHTML="時間";
- //將這些表頭依次放在表頭行中
- tr.appendChild(th1);
- tr.appendChild(th2);
- tr.appendChild(th3);
- //將這個新創建的表頭行掛到表格中
- datatable.appendChild(tr);
- }
- //構建指定數據庫行的數據對應的HTML文本。傳入參數:數據庫結果集中的某一行記錄
- function showData(row){
- //構建一個錶行用於取得當前所要的信息
- var tr= document.createElement('tr');
- //創建第一列,這一列是姓名
- var td1=document.createElement('td');
- //填充第一列的信息爲該行的name
- td1.innerHTML=row.name;
- //創建第二列,這一列是留言
- var td2=document.createElement('td');
- //填充第一列的信息爲該行的message
- td2.innerHTML=row.info;
- //創建第三列,這一列是日期
- var td3=document.createElement('td');
- //創建一個日期對象
- var t = new Date();
- t.setTime(row.time);
- //將日期的標準形式和國際化日期形式分別設置給當前列
- td3.innerHTML=t.toLocaleString()+" "+t.toLocaleTimeString();
- //吧這三列掛到當前行中
- tr.appendChild(td1);
- tr.appendChild(td2);
- tr.appendChild(td3);
- //讓這個表格在後面加上這一行
- datatable.appendChild(tr);
- }
- //這個函數用於顯示所有的行到表格中,這些行是從數據庫中拿出來的
- function showAllData(){
- //開啓SQLite數據庫事務,它用一個回調函數作爲參數表明要執行的語句
- db.transaction(function(tx){
- //首先它創建一個數據庫表,裏面有3個字段
- tx.executeSql('CREATE TABLE IF NOT EXISTS InfoData(name TEXT,info TEXT,time INTEGER)',[]);
- //創建一個查詢語句用來查詢數據庫表的所有記錄(這個由於是所有查詢,所以不需要預編譯語句和參數 (第二個參數))
- //然後定義了一個回調函數,表明對於結果集的處理
- tx.executeSql('SELECT * FROM InfoData',[],function(tx,rs){
- //對於結果集,首先,在獲取它之前移除頁面上的<table>的所有數據
- removeAllData();
- //遍歷結果集,對於每一行,依次調用showData來在table上創建對於的html文本
- for(var i=0;i<rs.rows.length;i++){
- //對於item(i),也就是某一行記錄,我們顯示其內容到頁面的表格中(構建對應的HTML片斷)
- showData(rs.rows.item(i));
- }
- });
- }
- );
- }
- //這個函數用於添加一條記錄到數據庫中,這些信息有些是從頁面獲得的,有些是系統生成的。
- function addData(name,info,time){
- //開啓一個數據庫事務
- //回調函數是一個有參數的插入語句,可以看到我們插入到表InfoData中,插入的內容也就是參數傳遞進來的內容
- db.transaction(function(tx){
- //插入的語句是個模板語句
- //插入成功的回調就是在控制檯上輸入一行日誌
- tx.executeSql('INSERT INTO InfoData VALUES(?,?,?)' , [name,info,time],function(tx,rs){
- console.log("成功保存數據!");
- },
- //插入失敗的回調就是在控制檯上輸入一行錯誤日誌
- function(tx,error){
- console.log(error.source+"::"+error.message);
- });
- }
- );
- }
- //保存用戶的當前輸入,這個是作爲點擊頁面上”保存“按鈕的事件處理函數
- function saveData(){
- //從HTML頁面中取得2個輸入框的文本
- var name=document.getElementById('name').value;
- var info=document.getElementById('info').value;
- //得到當前的系統時間
- var time= new Date().getTime();
- //將用戶名,用戶信息,當前時間存到數據庫中
- addData(name,info,time);
- //更新下方<p id="msg">的表格顯示
- showAllData();
- }
html 代碼:
- <!DOCTYPE html>
- <head>
- <meta charset="UTF-8">
- <title>使用HTML5本地數據庫DEMO</title>
- <script type="text/javascript" src="js/operateDB.js"></</script>
- </head>
- <body onload="init();">
- <h1>使用HTML5本地數據庫DEMO</h1>
- <table>
- <tr><td>姓名:</td><td><input type="text" id="name"></td></tr>
- <tr><td>資料:</td><td><input type="text" id="info"></td></tr>
- <tr>
- <td></td>
- <td><input type="button" value="保存" onclick="saveData();"></td>
- </tr>
- </table>
- <hr>
- <table id="datatable" border="1"></table>
- <p id="msg"></p>
- </body>