代码改变世界

Web SQL API

2012-06-26 11:29  BlackBird  阅读(3254)  评论(0编辑  收藏  举报

简介

  Web SQL数据库API实际上未包含在HTML 5规范之中,它是一个独立的规范,它引入了一套使用SQL操作客户端数据库的API。这些 SQL 语句可以直接在 js中编写运行,并且带有基本的数据库事务性的支持。

兼容浏览器

    chrome 17+     Safari5+    opera11.6+    iOS Safari3.2+    Opera Mobile11.0+   Android Browser2.1+

接口

    
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")');
});
openDatabase  创建/打开数据库,返回数据库的引用
db.transaction 执行数据库事务
tx.executeSql 在事务中执行sql语句

示例

   创建数据库   

function initDB(){ 
 var myDB = null; 
    try { 
        if (!window.openDatabase) { 
            // 当前浏览器没有数据库支持
            alert('db not supported'); 
        } else { 
            var shortName = 'testdb'; 
            var version = '1.0'; 
            var displayName = 'test offline database'; 
            var maxSize = 65536; // 字节
            myDB = openDatabase(shortName, version, displayName, maxSize); 
        } 
    } catch(e) { 
        // 这里开始异常处理 . 
        if (e == INVALID_STATE_ERR) { 
            // 数据库版本异常 . 
            alert("Invalid database version."); 
        } else { 
            alert("Unknown error "+e+"."); 
        } 
    } 
    // 返回创建好的数据库实例
    return myDB; 
 } 

 

      创建表

function createTables(db){ 
 db.transaction( 
 function (transaction) { 
 transaction.executeSql('CREATE TABLE IF NOT EXISTS User(name TEXT, age INTEGER);', 
   [], function(result){}, function(tx,error){}); 
 } 
 ); 
 } 

 

     执行插入语句

 db.transaction( 
 function (transaction) { 
 transaction.executeSql('INSERT INTO User values(?,?)',[“Mark”, 60],
  function(result){}, function(tx,error){}); 
 }) 

   

     执行查询语句

db.transaction( 
 function (transaction) { 
 transaction.executeSql('SELECT * FROM User WHERE name=?', [name], 
 function(result){}, function(tx,error){}); 
 }) 

    

    执行删除语句

db.transaction( 
 function (transaction) { 
 transaction.executeSql('DELETE FROM User where name=?',[name], 
 function(result){}, function(tx,error){}); 
 });