什么是 Web SQL

一、什么是 Web SQL

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

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

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

W3C Web 应用程序正在制定 2010 年11 月的规范。它指定了缺乏独立实现,因为该规范无法继续成为W3C推荐。

Mozilla Corporation是该标准背后的关键之一,同时也是IndexDB的主要推动者,是一种替代存储标准。

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

Web SQL数据库可在最新版本的Safari 、Chrome和Opera中运行。

二、Web SQL 的方法

Web SQL有三种方法:

  • 开放数据库: 它使用现有数据库创建数据库对象或创建新数据库。
  • 事务: 事务可以控制事务并根据情况提交或回滚。
  • 执行 SQL : 用于执行真正的SQL查询。

1、 开放数据库

如果数据库已经存在,则打开数据库的方法。使用下面的代码创建并打开数据库:

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

上述方法采用以下五个参数:

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

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

我们使用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的表。

2、插入操作

要在表中创建条目,我们执行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是这里的外部变量,执行数组中的每一项。

3、读操作

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

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);   
});

三、Web SQL 示例

让我们将这个示例保存在一个完整的 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

 

热门文章

优秀文章