Web sql 數(shù)據(jù)庫(kù) API 并不是 html5 規(guī)范的一部分,它是一個(gè)獨(dú)立的規(guī)范,引入了一組使用 sql 操作客戶端數(shù)據(jù)庫(kù)的 APIs Web sql 核心方法下表列出了在 Web sql 規(guī)范中定義的三個(gè)核心方法
|
| 參數(shù) | 說明 |
|---|---|
| 'ysDB' | 數(shù)據(jù)庫(kù)名稱 |
| '1.0' | 版本號(hào) |
| 'My first DB ' | 描述文本 |
| '2 * 1024 * 1024' | 數(shù)據(jù)庫(kù)大小 |
| func | 創(chuàng)建回調(diào),回調(diào)函數(shù)會(huì)在創(chuàng)建數(shù)據(jù)庫(kù)后被調(diào)用 |
方法 database.transaction() 用來執(zhí)行一個(gè)事物查詢操作
var db = openDatabase('ysdb',2 * 1024 * 1024);
db.transaction(function (tx) {
tx.executesql('CREATE TABLE IF NOT EXISTS logs (id unique,log)');
});上面的范例執(zhí)行后會(huì)在 'ysdb' 數(shù)據(jù)庫(kù)中創(chuàng)建一個(gè)名為 logs 的表
創(chuàng)建了數(shù)據(jù)庫(kù)后,我們可以使用下面的語句插入一些數(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,"簡(jiǎn)單編程")');
tx.executesql('INSERT INTO logs (id,log) VALUES (2,"www.F2er.com")');
});我們也可以使用動(dòng)態(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 會(huì)映射數(shù)組參數(shù)中的每個(gè)條目給 "?"
我們可以使用下面的語句從讀取數(shù)據(jù)庫(kù)中已經(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,"簡(jiǎn)單編程")');
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 也可以是動(dòng)態(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 也可以是動(dòng)態(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);
});