国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

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

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

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

如果你是一個(gè) Web 后端程序員,應(yīng)該很容易理解 SQL 的操作。

你也可以參考我們的?SQL 教程,了解更多數(shù)據(jù)庫(kù)操作知識(shí)。

Web SQL 數(shù)據(jù)庫(kù)可以在最新版的 Safari, Chrome 和 Opera 瀏覽器中工作.

核心方法

以下是規(guī)范中定義的三個(gè)核心方法:

openDatabase:這個(gè)方法使用現(xiàn)有的數(shù)據(jù)庫(kù)或者新建的數(shù)據(jù)庫(kù)創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)對(duì)象。

transaction:這個(gè)方法讓我們能夠控制一個(gè)事務(wù),以及基于這種情況執(zhí)行提交或者回滾。

executeSql:這個(gè)方法用于執(zhí)行實(shí)際的 SQL 查詢(xún)。

開(kāi)啟數(shù)據(jù)庫(kù)

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

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

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

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

數(shù)據(jù)庫(kù)名稱(chēng)

版本號(hào)

描述文本

數(shù)據(jù)庫(kù)大小

創(chuàng)建回調(diào)

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

執(zhí)行查詢(xún)

執(zhí)行查詢(xún)需要使用 database.transaction() 函數(shù)。這個(gè)函數(shù)需要一個(gè)參數(shù),它是一個(gè)負(fù)責(zé)實(shí)際執(zhí)行查詢(xún)的函數(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)');
});

上面的查詢(xún)語(yǔ)句會(huì)在 'mydb' 數(shù)據(jù)庫(kù)中創(chuàng)建一個(gè)叫做的 LOGS 的表。

插入操作

為了在表中創(chuàng)建條目,我們?cè)谏厦娴睦又屑尤牒?jiǎn)單的 SQL 查詢(xún),如下所示:

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)建條目時(shí)還可以傳遞如下所示的動(dò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 會(huì)映射數(shù)組參數(shù)中的每個(gè)條目給 "?"。

讀取操作

要讀取已經(jīng)存在的記錄,我們可以使用回調(diào)來(lái)捕獲結(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);
});

最終示例

<!DOCTYPE HTML>
<html>
   <head>
      <meta charset="UTF-8">
      <title>web SQL</title> 
      <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, "")');
            tx.executeSql('INSERT INTO LOGS (id, log) VALUES (2, "miracleart.cn")');
            msg = '<p>數(shù)據(jù)表已創(chuàng)建,且插入了兩條數(shù)據(jù)。</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>查詢(xún)記錄條數(shù): " + 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">狀態(tài)信息</div>
   </body>
</html>

刪除記錄

刪除記錄使用的格式如下:

db.transaction(function (tx) {
    tx.executeSql('DELETE FROM LOGS  WHERE id=1');
});

刪除指定的數(shù)據(jù)id也可以是動(dòng)態(tài)的:

db.transaction(function(tx) {
? ?tx.executeSql('DELETE FROM LOGS WHERE id=?', [id]);
});

更新記錄

更新記錄使用的格式如下:

db.transaction(function (tx) {
    tx.executeSql('UPDATE LOGS SET log=\'www.w3cschool.cc\' WHERE id=2');
});

更新指定的數(shù)據(jù)id也可以是動(dòng)態(tài)的:

db.transaction(function(tx) {    tx.executeSql('UPDATE LOGS SET log=\'www.w3cschool.cc\' WHERE id=?', [id]);});


繼續(xù)學(xué)習(xí)
||
<!DOCTYPE HTML> <html> <head> <meta charset="UTF-8"> <title>web SQL</title>  <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, "php中文網(wǎng)")'); tx.executeSql('INSERT INTO LOGS (id, log) VALUES (2, "miracleart.cn")'); tx.executeSql('INSERT INTO LOGS (id, log) VALUES (3, "www.ask.php.cn")'); msg = '<p>數(shù)據(jù)表已創(chuàng)建,且插入了兩條數(shù)據(jù)。</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>查詢(xún)記錄條數(shù): " + 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">狀態(tài)信息</div> </body> </html>
提交重置代碼