<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    我的家園

    我的家園

    HTML 5 Web SQL核心三叉戟

    Posted on 2012-04-15 16:37 zljpp 閱讀(126) 評論(0)  編輯  收藏

    Web SQL數據庫API實際上未包含在HTML 5規范之中,它是一個獨立的規范,它引入了一套使用SQL操作客戶端數據庫的API。假設你是一名優秀的Web開發人員,那毫無疑問,你對SQL和數據庫的相關概念已經很熟悉了,如果你對SQL不熟悉,那在繼續閱讀本文之前,最好先學習一下SQL相關的教程。

    最新版本的Chrome,Safari和Opera瀏覽器都支持Web SQL數據庫。

    核心方法

    本文將介紹規范中定義的三個核心方法:

    1、openDatabase:這個方法使用現有數據庫或創建新數據庫創建數據庫對象。

    2、transaction:這個方法允許我們根據情況控制事務提交或回滾。

    3、executeSql:這個方法用于執行真實的SQL查詢。

    打開數據庫

    openDatabase方法打開一個已經存在的數據庫,如果數據庫不存在,它還可以創建數據庫,創建并打開數據庫的語法如下:

    1. var db = openDatabase('mydb', '1.0', 'Test DB', 2 * 1024 * 1024); 

    上面的openDatabase方法使用了下面五個參數:

    1、數據庫名(mydb)

    2、版本號(1.0)

    3、描述(Test DB)

    4、數據庫大?。?*1024*1024)

    5、創建回調

    最后一個,即第五個參數“創建回調”,在創建數據庫時會調用它,但即使沒有這個參數,一樣可以在運行時創建數據庫。

    執行查詢

    執行查詢使用database.transaction()函數,它只需要一個參數,下面是一個真實的查詢語句:

    1. var db = openDatabase('mydb', '1.0', 'Test DB', 2 * 1024 * 1024);  
    2. db.transaction(function (tx) {    
    3.    tx.executeSql('CREATE TABLE IF NOT EXISTS LOGS (id unique, log)');  
    4. }); 

    上面的查詢將會在“mydb”數據庫中創建一個LOGS表。

    插入操作

    為了向表中插入新記錄,我們在上面的查詢語句中添加了一個簡單的SQL查詢,修改后的語句如下:

    1. var db = openDatabase('mydb', '1.0', 'Test DB', 2 * 1024 * 1024);  
    2. db.transaction(function (tx) {  
    3.    tx.executeSql('CREATE TABLE IF NOT EXISTS LOGS (id unique, log)');  
    4.    tx.executeSql('INSERT INTO LOGS (id, log) VALUES (1, "foobar")');  
    5.    tx.executeSql('INSERT INTO LOGS (id, log) VALUES (2, "logmsg")');  
    6. }); 

    在插入新記錄時,我們還可以傳遞動態值,如:

    1. var db = openDatabase('mydb', '1.0', 'Test DB', 2 * 1024 * 1024);  
    2. db.transaction(function (tx) {    
    3.   tx.executeSql('CREATE TABLE IF NOT EXISTS LOGS (id unique, log)');  
    4.   tx.executeSql('INSERT INTO LOGS   
    5.                         (id,log) VALUES (?, ?'), [e_id, e_log];  
    6. }); 

    這里的e_id和e_log是外部變量,executeSql在數組參數中將每個項目映射到“?”。

    讀操作

    如果要讀取已經存在的記錄,我們使用一個回調捕獲結果,代碼如下:

    1. var db = openDatabase('mydb', '1.0', 'Test DB', 2 * 1024 * 1024);  
    2. db.transaction(function (tx) {  
    3.    tx.executeSql('CREATE TABLE IF NOT EXISTS LOGS (id unique, log)');  
    4.    tx.executeSql('INSERT INTO LOGS (id, log) VALUES (1, "foobar")');  
    5.    tx.executeSql('INSERT INTO LOGS (id, log) VALUES (2, "logmsg")');  
    6. });  
    7. db.transaction(function (tx) {  
    8.    tx.executeSql('SELECT * FROM LOGS', [], function (tx, results) {  
    9.    var len = results.rows.length, i;  
    10.    msg = "<p>Found rows: " + len + "</p>";  
    11.    document.querySelector('#status').innerHTML +=  msg;  
    12.    for (i = 0; i < len; i++){  
    13.       alert(results.rows.item(i).log );  
    14.    }  
    15.  }, null);  
    16. }); 

    完整的例子

    最后,我們在一個完整的HTML 5文檔中展現前面講述的內容,同時使用瀏覽器來解析這個HTML 5文檔。

    1. <!DOCTYPE HTML> 
    2. <html> 
    3. <head> 
    4. <script type="text/javascript"> 
    5. var db = openDatabase('mydb', '1.0', 'Test DB', 2 * 1024 * 1024);  
    6. var msg;  
    7. db.transaction(function (tx) {  
    8.   tx.executeSql('CREATE TABLE IF NOT EXISTS LOGS (id unique, log)');  
    9.   tx.executeSql('INSERT INTO LOGS (id, log) VALUES (1, "foobar")');  
    10.   tx.executeSql('INSERT INTO LOGS (id, log) VALUES (2, "logmsg")');  
    11.   msg = '<p>Log message created and row inserted.</p>';  
    12.   document.querySelector('#status').innerHTML =  msg;  
    13. });  
    14.  
    15. db.transaction(function (tx) {  
    16.   tx.executeSql('SELECT * FROM LOGS', [], function (tx, results) {  
    17.    var len = results.rows.length, i;  
    18.    msg = "<p>Found rows: " + len + "</p>";  
    19.    document.querySelector('#status').innerHTML +=  msg;  
    20.    for (i = 0; i < len; i++){  
    21.      msg = "<p><b>" + results.rows.item(i).log + "</b></p>";  
    22.      document.querySelector('#status').innerHTML +=  msg;  
    23.    }  
    24.  }, null);  
    25. });  
    26. </script> 
    27. </head> 
    28. <body> 
    29. <div id="status" name="status">Status Message</div> 
    30. </body> 
    31. </html> 

    下面是在最新版本的Safari或Opera瀏覽器中產生的輸出結果。

    1. Log message created and row inserted.  
    2.  
    3. Found rows: 2  
    4.  
    5. foobar  
    6.  
    7. logmsg 

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 成人黄网站片免费视频 | 黄色免费网址在线观看| 99久久精品日本一区二区免费| 亚洲AV无码码潮喷在线观看| 中文字幕乱码免费看电影| 久久精品国产精品亚洲精品| 永久免费av无码入口国语片| 亚洲VA中文字幕无码一二三区| 99久久99久久精品免费观看| 亚洲福利视频一区二区三区| 国产v精品成人免费视频400条| 亚洲人成电影网站免费| 四虎影院永久免费观看| 国产精品1024在线永久免费| 亚洲av永久无码精品网站| 久久国产免费福利永久| 亚洲国产精品无码第一区二区三区| www.91亚洲| 免费毛片a线观看| tom影院亚洲国产一区二区| 日本无卡码免费一区二区三区| 日韩国产精品亚洲а∨天堂免| 亚洲精品国产福利一二区| 在线观看特色大片免费网站| 亚洲综合久久成人69| 精品国产免费一区二区| 久久九九免费高清视频| 亚洲欧洲精品一区二区三区| 24小时日本在线www免费的| 天堂亚洲免费视频| 亚洲今日精彩视频| 国产精品免费看香蕉| 嫩草在线视频www免费看| 亚洲国产超清无码专区| 国产免费AV片无码永久免费| 中文字幕在线视频免费观看| 亚洲成电影在线观看青青| 五月天婷亚洲天综合网精品偷| 久久久久免费精品国产| 亚洲av日韩专区在线观看| 久久久久久亚洲av成人无码国产|