在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ HTML/ HTML5 Web SQL 數(shù)據(jù)庫
HTML5 Web 存儲
HTML5 Web SQL 數(shù)據(jù)庫
HTML5 字符編碼
HTML5 URL 編碼
HTML5 Modernizr
HTML5 快速指南
HTML5 畫布
HTML5 語法
HTML5 顏色代碼生成器
HTML5 音頻和視頻
HTML5 微數(shù)據(jù)
HTML5 標(biāo)簽參考
HTML5 在線編輯器
HTML5 表單 2.0
HTML5 概述
HTML5 SVG 教程
HTML5 驗證
有用的 HTML5 資源
HTML5 字體參考
HTML5 屬性
HTML5 新標(biāo)簽(元素)
HTML5 地理定位
HTML5 拖放
HTML5 字符實體參考
HTML5 Web Workers
HTML5 過時標(biāo)簽和屬性
HTML5 顏色名稱
HTML5 WebSockets 教程
HTML5 服務(wù)器推送事件
HTML5 事件
HTML5 MathML 教程

HTML5 Web SQL 數(shù)據(jù)庫

Web SQL 數(shù)據(jù)庫 API 并不是 HTML5 規(guī)范的一部分,但是它是一個獨立的規(guī)范,引入了一組使用 SQL 操作客戶端數(shù)據(jù)庫的 APIs。

假定你是一個優(yōu)秀的 Web 開發(fā)人員,如果是這樣的話,毫無疑問你會很清楚 SQL 和 RDBMS 的概念。如果你仍然需要一個 SQL 的議題,可以學(xué)習(xí)我們的 SQL 教程。

我們可以在最新版的 Safari,Chrome 和 Opera 中使用 Web SQL 數(shù)據(jù)庫。

核心方法

下面是規(guī)范中定義的三個核心方法。也會涵蓋在本教程中:

  1. openDatabase:這個方法使用現(xiàn)有的數(shù)據(jù)庫或者新建的數(shù)據(jù)庫創(chuàng)建一個數(shù)據(jù)庫對象。
  2. transaction:這個方法讓我們能夠控制一個事務(wù),以及基于這種情況執(zhí)行提交或者回滾。
  3. executeSql:這個方法用于執(zhí)行實際的 SQL 查詢。

開啟數(shù)據(jù)庫

如果數(shù)據(jù)庫已經(jīng)存在,openDatabase 方法負責(zé)開啟數(shù)據(jù)庫,如果不存在,這個方法會創(chuàng)建它。

使用下面的代碼可以創(chuàng)建并開啟一個數(shù)據(jù)庫:

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

上面的方法接受下列五個參數(shù):

  1. 數(shù)據(jù)庫名稱
  2. 版本號
  3. 描述文本
  4. 數(shù)據(jù)庫大小
  5. 創(chuàng)建回調(diào)

最后也是第五個參數(shù),創(chuàng)建回調(diào)會在創(chuàng)建數(shù)據(jù)庫后被調(diào)用。然而,即使沒有這個特性(功能),運行時仍然會創(chuàng)建數(shù)據(jù)庫以及正確的版本。

執(zhí)行查詢

執(zhí)行查詢需要使用 database.transaction() 函數(shù)。這個函數(shù)需要一個參數(shù),它是一個負責(zé)實際執(zhí)行查詢的函數(shù),如下所示:

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

上面的查詢語句會在 'mydb' 數(shù)據(jù)庫中創(chuàng)建一個叫做的 LOGS 的表。

插入操作

為了在表中創(chuàng)建條目,我們在上面的例子中加入簡單的 SQL 查詢,如下所示:

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

創(chuàng)建條目時還可以傳遞如下所示的動態(tài)值:

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

這里的 e_id 和 e_log 是外部變量,executeSql 會映射數(shù)組參數(shù)中的每個條目給 "?"。

讀取操作

要讀取已經(jīng)存在的記錄,我們可以使用回調(diào)來捕獲結(jié)果,如下所示:

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

最終示例

最后,然我們把這個例子放到如下所示的完整 HTML5 文檔中,然后嘗試在 Safari 瀏覽器中運行它:

<!DOCTYPE HTML>
<html>
<head>
<script type="text/javascript">
var db = openDatabase('mydb', '1.0', 'Test DB', 2 * 1024 * 1024);
var msg;
db.transaction(function (tx) {
  tx.executeSql('CREATE TABLE IF NOT EXISTS LOGS (id unique, log)');
  tx.executeSql('INSERT INTO LOGS (id, log) VALUES (1, "foobar")');
  tx.executeSql('INSERT INTO LOGS (id, log) VALUES (2, "logmsg")');
  msg = '<p>Log message created and row inserted.</p>';
  document.querySelector('#status').innerHTML =  msg;
});

db.transaction(function (tx) {
  tx.executeSql('SELECT * FROM LOGS', [], function (tx, results) {
   var len = results.rows.length, i;
   msg = "<p>Found rows: " + len + "</p>";
   document.querySelector('#status').innerHTML +=  msg;
   for (i = 0; i < len; i++){
     msg = "<p><b>" + results.rows.item(i).log + "</b></p>";
     document.querySelector('#status').innerHTML +=  msg;
   }
 }, null);
});
</script>
</head>
<body>
<div id="status" name="status">Status Message</div>
</body>
</html>

在最新版的 Safari 或者 Opera 瀏覽器中這會生成如下所示結(jié)果:

Log message created and row inserted.

Found rows: 2

foobar

logmsg

便于學(xué)習(xí)這一概念 - 請使用最新版的 Safari 或者 Opera 進行在線練習(xí)。

上一篇:HTML5 顏色名稱下一篇:HTML5 驗證