webSQL

HTML5 Web 存儲 HTML5 應用程序緩存
HTML5 Web SQL 數據庫
Web SQL 數據庫 API 并不是 HTML5 規(guī)范的一部分阴汇,但是它是一個獨立的規(guī)范,引入了一組使用 SQL 操作客戶端數據庫的 APIs。
如果你是一個 Web 后端程序員辆琅,應該很容易理解 SQL 的操作。
Web SQL 數據庫可以在最新版的 Safari, Chrome 和 Opera 瀏覽器中工作。

核心方法###

以下是規(guī)范中定義的三個核心方法:
1.openDatabase:這個方法使用現有的數據庫或者新建的數據庫創(chuàng)建一個數據庫對象吨悍。
2.transaction:這個方法讓我們能夠控制一個事務,以及基于這種情況執(zhí)行提交或者回滾女嘲。
3.executeSql:這個方法用于執(zhí)行實際的 SQL 查詢畜份。

打開數據庫##

我們可以使用 openDatabase() 方法來打開已存在的數據庫,如果數據庫不存在欣尼,則會創(chuàng)建一個新的數據庫爆雹,使用代碼如下:
let db = openDatabase('mydb', '1.0', 'Test DB', 2 * 1024 * 1024);
openDatabase() 方法對應的五個參數說明:
數據庫名稱
版本號
描述文本
數據庫大小
創(chuàng)建回調
第五個參數,創(chuàng)建回調會在創(chuàng)建數據庫后被調用愕鼓。

執(zhí)行查詢操作##

執(zhí)行操作使用 database.transaction() 函數:
let 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)');
});
上面的語句執(zhí)行后會在 'mydb' 數據庫中創(chuàng)建一個名為 LOGS 的表钙态。

插入數據##

在執(zhí)行上面的創(chuàng)建表語句后,我們可以插入一些數據:
let 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.runoob.com")');
});
我們也可以使用動態(tài)值來插入數據:
let 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 (?, ?)', [e_id, e_log]);
});
實例中的 e_id 和 e_log 是外部變量菇晃,executeSql 會映射數組參數中的每個條目給 "?"册倒。

讀取數據##

以下實例演示了如何讀取數據庫中已經存在的數據:
let 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.runoob.com")');
});

db.transaction(function (tx) {
tx.executeSql('SELECT * FROM LOGS', [], function (tx, results) {
var len = results.rows.length, i;
msg = "
查詢記錄條數: " + len + "

";
document.querySelector('#status').innerHTML += msg;

  for (i = 0; i < len; i++){
     alert(results.rows.item(i).log );
  }

}, null);
});
完整實例
實例
let db = openDatabase('mydb', '1.0', 'Test DB', 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, log) VALUES (1, "依依玖玥")');
tx.executeSql('INSERT INTO LOGS (id, log) VALUES (2, "www.runoob.com")');
msg = '
數據表已創(chuàng)建,且插入了兩條數據磺送。

';
document.querySelector('#status').innerHTML = msg;
});

db.transaction(function (tx) {
tx.executeSql('SELECT * FROM LOGS', [], function (tx, results) {
var len = results.rows.length, i;
msg = "
查詢記錄條數: " + len + "

";
document.querySelector('#status').innerHTML += msg;

for (i = 0; i < len; i++){
    msg = "

" + results.rows.item(i).log + "

";
document.querySelector('#status').innerHTML += msg;
}
}, null);
});

刪除記錄##

刪除記錄使用的格式如下:
db.transaction(function (tx) {
tx.executeSql('DELETE FROM LOGS WHERE id=1');
});
刪除指定的數據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='www.w3cschool.cc' WHERE id=2');
});
更新指定的數據id也可以是動態(tài)的:
db.transaction(function(tx) {
tx.executeSql('UPDATE LOGS SET log='www.w3cschool.cc' WHERE id=?', [id]);
});
完整實例
實例
var db = openDatabase('mydb', '1.0', 'Test DB', 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, log) VALUES (1, "依依玖玥")');
tx.executeSql('INSERT INTO LOGS (id, log) VALUES (2, "www.runoob.com")');
msg = '
數據表已創(chuàng)建驻子,且插入了兩條數據。

';
document.querySelector('#status').innerHTML = msg;
});

db.transaction(function (tx) {
tx.executeSql('DELETE FROM LOGS WHERE id=1');
msg = '
刪除 id 為 1 的記錄估灿。

';
document.querySelector('#status').innerHTML = msg;
});

db.transaction(function (tx) {
tx.executeSql('UPDATE LOGS SET log='www.w3cschool.cc' WHERE id=2');
msg = '
更新 id 為 2 的記錄崇呵。

';
document.querySelector('#status').innerHTML = msg;
});

db.transaction(function (tx) {
tx.executeSql('SELECT * FROM LOGS', [], function (tx, results) {
var len = results.rows.length, i;
msg = "
查詢記錄條數: " + len + "

";
document.querySelector('#status').innerHTML += msg;

   for (i = 0; i < len; i++){
      msg = "

" + results.rows.item(i).log + "

";
document.querySelector('#status').innerHTML += msg;
}
}, null);
});

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市馅袁,隨后出現的幾起案子域慷,更是在濱河造成了極大的恐慌,老刑警劉巖汗销,帶你破解...
    沈念sama閱讀 218,682評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件犹褒,死亡現場離奇詭異,居然都是意外死亡弛针,警方通過查閱死者的電腦和手機叠骑,發(fā)現死者居然都...
    沈念sama閱讀 93,277評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來钦奋,“玉大人座云,你說我怎么就攤上這事疙赠。” “怎么了朦拖?”我有些...
    開封第一講書人閱讀 165,083評論 0 355
  • 文/不壞的土叔 我叫張陵圃阳,是天一觀的道長。 經常有香客問我璧帝,道長捍岳,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,763評論 1 295
  • 正文 為了忘掉前任睬隶,我火速辦了婚禮锣夹,結果婚禮上,老公的妹妹穿的比我還像新娘苏潜。我一直安慰自己银萍,他們只是感情好,可當我...
    茶點故事閱讀 67,785評論 6 392
  • 文/花漫 我一把揭開白布恤左。 她就那樣靜靜地躺著贴唇,像睡著了一般。 火紅的嫁衣襯著肌膚如雪飞袋。 梳的紋絲不亂的頭發(fā)上戳气,一...
    開封第一講書人閱讀 51,624評論 1 305
  • 那天,我揣著相機與錄音巧鸭,去河邊找鬼瓶您。 笑死,一個胖子當著我的面吹牛纲仍,可吹牛的內容都是我干的呀袱。 我是一名探鬼主播,決...
    沈念sama閱讀 40,358評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼郑叠,長吁一口氣:“原來是場噩夢啊……” “哼压鉴!你這毒婦竟也來了?” 一聲冷哼從身側響起锻拘,我...
    開封第一講書人閱讀 39,261評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎击蹲,沒想到半個月后署拟,有當地人在樹林里發(fā)現了一具尸體,經...
    沈念sama閱讀 45,722評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡歌豺,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年推穷,在試婚紗的時候發(fā)現自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片类咧。...
    茶點故事閱讀 40,030評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡馒铃,死狀恐怖蟹腾,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情区宇,我是刑警寧澤娃殖,帶...
    沈念sama閱讀 35,737評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站议谷,受9級特大地震影響炉爆,放射性物質發(fā)生泄漏。R本人自食惡果不足惜卧晓,卻給世界環(huán)境...
    茶點故事閱讀 41,360評論 3 330
  • 文/蒙蒙 一芬首、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧逼裆,春花似錦郁稍、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,941評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至掸屡,卻和暖如春封寞,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背仅财。 一陣腳步聲響...
    開封第一講書人閱讀 33,057評論 1 270
  • 我被黑心中介騙來泰國打工狈究, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人盏求。 一個月前我還...
    沈念sama閱讀 48,237評論 3 371
  • 正文 我出身青樓抖锥,卻偏偏與公主長得像,于是被迫代替她去往敵國和親碎罚。 傳聞我的和親對象是個殘疾皇子磅废,可洞房花燭夜當晚...
    茶點故事閱讀 44,976評論 2 355

推薦閱讀更多精彩內容

  • Html5數據庫API是以一個獨立規(guī)范形式出現,它包含三個核心方法: 1荆烈、openDatabase:這個方法使用現...
    qhaobaba閱讀 332評論 0 0
  • 瀏覽器緩存(Browser Caching)是瀏覽器端保存數據用于快速讀取或避免重復資源請求的優(yōu)化機制憔购,有效的緩存...
    fuyou2324閱讀 5,178評論 0 8
  • H5 meta詳解 viewport width:控制 viewport 的大小宫峦,可以指定的一個值,如果 600玫鸟,...
    FConfidence閱讀 820評論 0 3
  • ¥開啟¥ 【iAPP實現進入界面執(zhí)行逐一顯】 〖2017-08-25 15:22:14〗 《//首先開一個線程导绷,因...
    小菜c閱讀 6,424評論 0 17
  • 文/春日情意綜 “好一陣子沒見著貓了呢∈浩”長老悠閑的朝天仰躺妥曲,歪頭注視著遠方某家伙贾费,裝作深沉地感嘆道。 “長老檐盟,別...
    春日情意綜閱讀 315評論 0 0