Web SQL數(shù)據(jù)庫API并不是HTML5規(guī)范的一部分,但是它是一個(gè)獨(dú)立的規(guī)范,引入了一組使用SQL操作客戶端數(shù)據(jù)庫的API。
核心方法
openDatabase-使用現(xiàn)有的數(shù)據(jù)庫或者新建的數(shù)據(jù)庫創(chuàng)建一個(gè)數(shù)據(jù)庫對象
transaction-能夠控制一個(gè)事物,以及基于這種情況執(zhí)行提交或者回滾
executeSql-執(zhí)行實(shí)際的SQL語句
打開數(shù)據(jù)庫
//用openDatabase()方法打開已存在的數(shù)據(jù)庫,如果數(shù)據(jù)庫不存在,則會創(chuàng)建一個(gè)新的數(shù)據(jù)庫var db = openDatabase('mydb', '1.0', 'Test DB', 2 * 1024 * 1024);
openDatabase() 方法對應(yīng)的五個(gè)參數(shù)說明:
-
數(shù)據(jù)庫名稱
-
版本號
-
描述文本
-
數(shù)據(jù)庫大小(字節(jié))
-
創(chuàng)建回調(diào)(可選)
第五個(gè)參數(shù),創(chuàng)建回調(diào)會在創(chuàng)建數(shù)據(jù)庫后被調(diào)用。
創(chuàng)建表
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)'); });
插入數(shù)據(jù)
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, "博客園")'); tx.executeSql('INSERT INTO LOGS (id, log) VALUES (2, "www.cnblogs.com")'); });
也可以使用動態(tài)值插入數(shù)據(jù)
db = openDatabase(, , , * *
讀取數(shù)據(jù)
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, "博客園")'); tx.executeSql('INSERT INTO LOGS (id, log) VALUES (2, "www.cnblogs.com")'); }); db.transaction(function (tx) { tx.executeSql('SELECT * FROM LOGS', [], function (tx, results) { var len = results.rows.length; msg = "<p>查詢記錄條數(shù): " + len + "</p>"; document.querySelector('#status').innerHTML += msg; for (i = 0; i < len; i++){ msg = "<p><b>" + results.rows[i].log + "</b></p>"; } }, null); });
刪除記錄
db.transaction(function (tx) { tx.executeSql('DELETE FROM LOGS WHERE id=1'); });
刪除數(shù)據(jù)也可以是動態(tài)的
db.transaction(function(tx) { tx.executeSql('DELETE FROM LOGS WHERE id=?', [id]); });
更新記錄
tx.executeSql("UPDATE CC SET logname='www.baidu.com' WHERE id=2");
更新數(shù)據(jù)也可以是動態(tài)的
tx.executeSql("UPDATE CC SET logname='www.baidu.com' WHERE id=?", [id]);
注意:刪除和修改不可以和建表語句放一個(gè)executeSql里,最好都分開寫
以下是建好的數(shù)據(jù)庫