Web sql 數(shù)據(jù)庫 API 并不是 html5 規(guī)范的一部分,它是一個獨(dú)立的規(guī)范,引入了一組使用 sql 操作客戶端數(shù)據(jù)庫的 APIs Web sql 核心方法下表列出了在 Web sql 規(guī)范中定義的三個核心方法
|
參數(shù) | 說明 |
---|---|
'ysDB' | 數(shù)據(jù)庫名稱 |
'1.0' | 版本號 |
'My first DB ' | 描述文本 |
'2 * 1024 * 1024' | 數(shù)據(jù)庫大小 |
func | 創(chuàng)建回調(diào),回調(diào)函數(shù)會在創(chuàng)建數(shù)據(jù)庫后被調(diào)用 |
方法 database.transaction() 用來執(zhí)行一個事物查詢操作
var db = openDatabase('ysdb',2 * 1024 * 1024); db.transaction(function (tx) { tx.executesql('CREATE TABLE IF NOT EXISTS logs (id unique,log)'); });
上面的范例執(zhí)行后會在 'ysdb' 數(shù)據(jù)庫中創(chuàng)建一個名為 logs 的表
創(chuàng)建了數(shù)據(jù)庫后,我們可以使用下面的語句插入一些數(shù)據(jù)
var db = openDatabase('ysdb',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,"簡單編程")'); tx.executesql('INSERT INTO logs (id,log) VALUES (2,"www.F2er.com")'); });
我們也可以使用動態(tài)值來插入數(shù)據(jù)
var db = openDatabase('ysdb',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 會映射數(shù)組參數(shù)中的每個條目給 "?"
我們可以使用下面的語句從讀取數(shù)據(jù)庫中已經(jīng)存在的數(shù)據(jù)
var db = openDatabase('ysdb',2 * 1024 * 1024); db.transaction(function (tx) { tx.executesql('CREATE TABLE IF NOT EXISTS logs (id unique,"www.F2er.com")'); }); db.transaction(function (tx) { tx.executesql('SELECT * FROM logs',[],function (tx,results) { var len = results.rows.length,i; msg = "<p>查詢記錄條數(shù): " + len + "</p>"; document.querySelector('#status').innerhtml += msg; for (i = 0; i < len; i++){ alert(results.rows.item(i).log ); } },null); });
var db = openDatabase('ysdb',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,"簡單編程")'); tx.executesql('INSERT INTO logs (id,"www.F2er.com")'); msg = '<p>數(shù)據(jù)表已創(chuàng)建,且插入了兩條數(shù)據(jù)</p>'; document.querySelector('#status').innerHTML = msg; }); db.transaction(function (tx) { tx.executesql('SELECT * FROM logs',results) { var len = results.rows.length,i; msg = "<p>查詢記錄條數(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); });
我們可以使用下面的語句來刪除記錄
db.transaction(function (tx) { tx.executesql('DELETE FROM logs WHERE id=1'); });
刪除指定的數(shù)據(jù) id 也可以是動態(tài)的
db.transaction(function(tx) { tx.executesql('DELETE FROM logs WHERE id=?',[id]); });
我們可以使用下面的語句來更新記錄
db.transaction(function (tx) { tx.executesql('UPDATE logs SET log=\'F2er.com\' WHERE id=2'); });
更新指定的數(shù)據(jù) id 也可以是動態(tài)的
db.transaction(function(tx) { tx.executesql('UPDATE logs SET log=\'F2er.com\' WHERE id=?',[id]); });
var db = openDatabase('ysdb',2 * 1024 * 1024); var msg; db.transaction(function (tx) { tx.executesql('CREATE TABLE IF NOT EXISTS logs (id unique,"www.F2er.com")'); msg = '<p>數(shù)據(jù)表已創(chuàng)建,且插入了兩條數(shù)據(jù)。</p>'; document.querySelector('#status').innerHTML = msg; }); db.transaction(function (tx) { tx.executesql('DELETE FROM logs WHERE id=1'); msg = '<p>刪除 id 為 1 的記錄。</p>'; document.querySelector('#status').innerHTML = msg; }); db.transaction(function (tx) { tx.executesql('UPDATE logs SET log=\'F2er.com\' WHERE id=2'); msg = '<p>更新 id 為 2 的記錄。</p>'; document.querySelector('#status').innerHTML = msg; }); db.transaction(function (tx) { tx.executesql('SELECT * FROM logs',results) { var len = results.rows.length,i; msg = "<p>查詢記錄條數(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); });