什么是Web SQL 


什么是Web SQL?

Web SQL数据库是用于存储或管理数据库中数据的网页。 Google Chrome,Opera和Android浏览器均支持该API。

Web SQL API不是HTML5规范的一部分,而是一个单独的规范。它提供了一组API来操作客户端数据库。

开放式数据库,事务是执行的基本方法。

W3C Web应用程序将在2010年11月使用该规范。它指定缺少独立的实现,因为该规范无法继续成为W3C的建议。

Mozilla Corporation是该标准背后的关键之一,同时又是IndexDB背后的原动力,是替代存储标准。

Web API不是HTML5规范的一部分。它是一个单独的规范,它指定一组API来操作客户端数据库。

网络SQL数据库可在Safari,Chrome和Opera的最新版本中使用。

Web SQL的方法:

有三种方法-

  • 打开数据库-它使用现有数据库创建一个数据库对象,或者创建一个新的数据库对象。
  • 事务-事务可以控制事务,并根据情况进行提交回滚。
  • 执行SQL-用于执行真实的SQL查询。

数据库开放

如果数据库已经存在,则使用Open Database方法打开数据库。使用以下代码创建并打开数据库-

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

上面的方法采用了以下五个参数-

  • 数据库名称
  • 版本号
  • 文字说明
  • 数据库大小
  • 建立回电

在最后和第五个参数中,如果正在创建数据库,则将调用创建回调。

我们使用database.transaction()执行查询。它有一个参数,执行查询的方式如下:

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”数据库中生成一个名为LOGS的表。

插入操作

要在表中创建条目,我们执行一个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")'); 
}); 

我们可以在创建输入时传递动态值,如下所示:

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是此处的外部变量,它们执行数组中的每个项目。

读操作

要读取已经存在的记录,我们使用回调来捕获结果,如下所示:

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>

上面的代码产生以下结果:

Log message created and row inserted.
Found rows: 2
foobar
logmsg
0



error: 内容受到保护 !!