Web SQL Database

db = openDatabase("ToDo""0.1""A list of to do items.", 200000);

上代码创建了一个数据库对象 db,名称是 Todo,版本编号为0.1。db 还带有描述信息和大概的大小值。用户代理(user agent)可使用这个描述与用户进行交流,说明数据库是用来做什么的。利用代码中提供的大小值,用户代理可以为内容留出足够的存储。如果需要,这个大小是可以改变的,所以没有必要预先假设允许用户使用多少空间。

if(!db)      alert("Failed to connect to database."); 检测之前创建的连接是否成功

执行查询

执行一个查询,你可以使用database.transaction()函数。该函数具有单一参数,负责查询实际执行的函数。

db.transactionfunction(tx) 

该事务具有一个函数:executeSql。这个函数使用四个参数:表示查询的字符串,插入到查询中问号所在处的字符串数据(很像 Java 的预先准备好的语句),一个成功时执行的函数和一个失败时执行的函数。

tx.executeSql("SELECT COUNT(*) FROM ToDo", [], function(result){}, function(tx, error){});


以下代码使用结果对象来输出一个查询的结果:

  1. db.transactionfunction(tx) { tx.executeSql("SELECT * FROM ToDo", [],  
  2.  function(tx, result) { for(var i = 0; i < result.rows.length; i++)   
  3. { document.write('<b>' + result.rows.item(i)['label'] + '</b><br />'); } }, null); } ); 

插入

db.transactionfunction(tx) { tx.executeSql("INSERT INTO ToDo (label, timestamp) values(?, ?)"
[label, new 
Date().getTime()], nullnull); } )



function createTable({
  db.transaction(function(tx{
    tx.executeSql("CREATE TABLE Table1Test (id REAL UNIQUE, text TEXT)"[],
        function(txlog.innerHTML 'Table1Test created' },
        onError);
  });
}

// add record with random values
function newRecord({
  var num Math.round(Math.random(10000)// random data
  db.transaction(function(tx{
    tx.executeSql("INSERT INTO Table1Test (id, text) VALUES (?, ?)"[num'Modify text...'],
        function(txresult{
          log.innerHTML 'record added';
          showRecords();
        }
        onError);
  });
}

function updateRecord(idtextEl{
  db.transaction(function(tx{
    tx.executeSql("UPDATE Table1Test SET text = ? WHERE id = ?"[textEl.innerHTMLid]nullonError);
  });
}

function deleteRecord(id{
  db.transaction(function(tx{
    tx.executeSql("DELETE FROM Table1Test WHERE id=?"[id],
        function(txresultshowRecords(}
        onError);
  });
}

// delete table from db
function dropTable({
  db.transaction(function(tx{
    tx.executeSql("DROP TABLE Table1Test"[],
        function(txshowRecords(}
        onError);
  });
}


posted @ 2011-12-27 20:36  风去无痕  阅读(614)  评论(0编辑  收藏  举报