偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

前端:一文帶大家了解WebSQL相關(guān)的知識(shí)

開(kāi)發(fā) 前端
WebSQL 目前已被棄用 ,在使用時(shí)一定要充分考慮瀏覽器兼容性問(wèn)題,避免在項(xiàng)目中盲目使用而導(dǎo)致兼容性風(fēng)險(xiǎn)。在現(xiàn)代前端開(kāi)發(fā)中,IndexedDB 等新興技術(shù)正逐漸成為更優(yōu)的選擇,它們?cè)诠δ芎托阅苌嫌兄錾谋憩F(xiàn)。

一、WebSQL 是什么?

WebSQL作為瀏覽器環(huán)境中的輕量級(jí)關(guān)系型數(shù)據(jù)庫(kù)解決方案,允許前端開(kāi)發(fā)者直接使用熟悉的SQL語(yǔ)法操作客戶(hù)端數(shù)據(jù)存儲(chǔ)。其本質(zhì)是基于SQLite的瀏覽器封裝,通過(guò)異步JavaScript接口提供完整的SQL數(shù)據(jù)庫(kù)操作能力。它允許開(kāi)發(fā)者在瀏覽器中創(chuàng)建和操作數(shù)據(jù)庫(kù),實(shí)現(xiàn)數(shù)據(jù)的持久化存儲(chǔ),該技術(shù)對(duì)于開(kāi)發(fā)離線應(yīng)用、單頁(yè)應(yīng)用(SPA)等場(chǎng)景來(lái)說(shuō),可以顯著提升應(yīng)用的性能和用戶(hù)體驗(yàn)。作為一名合格的前端程序員來(lái)說(shuō),了解這項(xiàng)技術(shù)還是非常有必要的。今天給大家分享關(guān)于WebSQL相關(guān)的知識(shí),感興趣的可以一起了解一下!

二、WebSQL如何打開(kāi)?

在谷歌瀏覽器開(kāi)發(fā)者工具中,WebSQL 可以很輕松找到入口,這個(gè)對(duì)于許多前端開(kāi)發(fā)者都是非常熟悉。首先打開(kāi)谷歌瀏覽器,按下 F12 鍵或通過(guò)右鍵點(diǎn)擊頁(yè)面選擇 “檢查”,便能打開(kāi)強(qiáng)大的谷歌開(kāi)發(fā)者工具。

圖片圖片

接著,在眾多面板中找到 “Application 應(yīng)用” 面板,左側(cè)的樹(shù)形菜單中存儲(chǔ)根節(jié)點(diǎn)包含了 Cookies、Local Storage、Session Storage、IndexedDB 和 Web SQL 等。

圖片圖片

然后點(diǎn)擊 “Web SQL” 選項(xiàng),所有相關(guān)數(shù)據(jù)庫(kù)、表以及表中的數(shù)據(jù)便可以非常直觀的看到 。

圖片圖片

借助谷歌開(kāi)發(fā)者工具,開(kāi)發(fā)者不僅能輕松查看數(shù)據(jù)庫(kù)的結(jié)構(gòu),了解各個(gè)表之間的關(guān)聯(lián),還能實(shí)時(shí)查看表中的數(shù)據(jù),對(duì)數(shù)據(jù)的變化進(jìn)行監(jiān)控。比如在開(kāi)發(fā)一個(gè)簡(jiǎn)單的待辦應(yīng)用時(shí),就可以通過(guò)開(kāi)發(fā)者工具查看 WebSQL 中存儲(chǔ)的任務(wù)列表,確認(rèn)數(shù)據(jù)是否正確存儲(chǔ)和更新。

三、WebSQL 的使用方法

3.1 核心方法介紹

WebSQL 的使用主要依賴(lài)三個(gè)核心方法,熟練掌握它們是運(yùn)用 WebSQL 的關(guān)鍵。

openDatabase 方法用于創(chuàng)建或打開(kāi)一個(gè)數(shù)據(jù)庫(kù)。它就像是一把鑰匙,能打開(kāi)數(shù)據(jù)庫(kù)的大門(mén),如果數(shù)據(jù)庫(kù)不存在,它還能幫我們新建一個(gè)。比如:

var db = openDatabase('webSQLDB', '1.0', 'WebSQL數(shù)據(jù)庫(kù)測(cè)試', 50 * 1024 * 1024);

var db = openDatabase('webSQLDB', '1.0', 'WebSQL數(shù)據(jù)庫(kù)測(cè)試', 50 * 1024 * 1024);

參數(shù)說(shuō)明:

數(shù)據(jù)庫(kù)名稱(chēng):webSQLDB

版本號(hào):1.0

數(shù)據(jù)庫(kù)描述:WebSQL數(shù)據(jù)庫(kù)測(cè)試

數(shù)據(jù)庫(kù)大?。?0 * 1024 * 1024 大小為50MB

WebSQL也支持事務(wù)用法,使用transaction 。

transaction 方法主要用于管理事務(wù),它確保一系列數(shù)據(jù)庫(kù)操作要么全部成功執(zhí)行,要么全部失敗回滾,和我們常見(jiàn)的關(guān)系型數(shù)據(jù)庫(kù)相似,用來(lái)保證數(shù)據(jù)庫(kù)操作的一致性和完整性。具體用法如下圖:

db.transaction(function (tx) {    // 這里放置具體的數(shù)據(jù)庫(kù)操作});

db.transaction(function (tx) {
    // 這里放置具體的數(shù)據(jù)庫(kù)操作
});

executeSql 方法則是真正執(zhí)行 SQL 語(yǔ)句的執(zhí)行者,它可以執(zhí)行創(chuàng)建表、插入數(shù)據(jù)、查詢(xún)數(shù)據(jù)等各種 SQL 操作。

-- 創(chuàng)建表如果表不存在的情況下tx.executeSql('CREATE TABLE IF NOT EXISTS users (id unique, name,age)');

-- 創(chuàng)建表如果表不存在的情況下
tx.executeSql('CREATE TABLE IF NOT EXISTS users (id unique, name,age)');

3.2 實(shí)戰(zhàn)示例

這里我們直接使用谷歌開(kāi)發(fā)者工具實(shí)際操作一下

創(chuàng)建數(shù)據(jù)庫(kù):

var db = openDatabase('testDB', '1.0', 'Test Database', 5 * 1024 * 1024);console.log('testDB數(shù)據(jù)庫(kù)已創(chuàng)建或打開(kāi)');

var db = openDatabase('testDB', '1.0', 'Test Database', 5 * 1024 * 1024);
console.log('testDB數(shù)據(jù)庫(kù)已創(chuàng)建或打開(kāi)');

說(shuō)明:創(chuàng)建一個(gè)大小為5MB數(shù)據(jù)庫(kù)名稱(chēng)為testDB的數(shù)據(jù)庫(kù)。

創(chuàng)建表:

db.transaction(function (tx) {    tx.executeSql('CREATE TABLE IF NOT EXISTS users(id INTEGER PRIMARY KEY, name TEXT, age INTEGER)');    console.log('表已創(chuàng)建');});

db.transaction(function (tx) {
    tx.executeSql('CREATE TABLE IF NOT EXISTS users(id INTEGER PRIMARY KEY, name TEXT, age INTEGER)');
    console.log('表已創(chuàng)建');
});

說(shuō)明: testDB 數(shù)據(jù)庫(kù)中創(chuàng)建了一個(gè)名為 users的表,表中有 id(主鍵,整數(shù)類(lèi)型)、name(文本類(lèi)型)和 age(整數(shù)類(lèi)型)三個(gè)字段。

圖片圖片

插入數(shù)據(jù):

var name = '小明';var age = 30;db.transaction(function (tx) {    tx.executeSql('INSERT INTO users (name, age) VALUES (?,?)', [name, age], function () {        console.log('數(shù)據(jù)插入成功');    }, function (error) {        console.log('數(shù)據(jù)插入失敗: ', error.message);    });});

var name = '小明';
var age = 30;
db.transaction(function (tx) {
    tx.executeSql('INSERT INTO users (name, age) VALUES (?,?)', [name, age], function () {
        console.log('數(shù)據(jù)插入成功');
    }, function (error) {
        console.log('數(shù)據(jù)插入失敗: ', error.message);
    });
});

說(shuō)明:向 users表中插入了一條學(xué)生數(shù)據(jù),這里使用占位符 ? 來(lái)傳遞實(shí)際數(shù)據(jù),可以避免 SQL 注入風(fēng)險(xiǎn)。

圖片圖片

數(shù)據(jù)插入后我們直接切換到開(kāi)發(fā)者工具控制臺(tái)去查看,如下圖表示創(chuàng)建成功了。

圖片圖片

接著通過(guò)控制臺(tái)直接使用sql語(yǔ)句讀取數(shù)據(jù):

db.transaction(function (tx) {    tx.executeSql('SELECT * FROM users', [], function (tx, results) {        var len = results.rows.length;        for (var i = 0; i < len; i++) {            var user = results.rows.item(i);            console.log('用戶(hù)信息: ', user.name, user.age);        }    }, function (error) {        console.log('數(shù)據(jù)讀取失敗: ', error.message);    });});

db.transaction(function (tx) {
    tx.executeSql('SELECT * FROM users', [], function (tx, results) {
        var len = results.rows.length;
        for (var i = 0; i < len; i++) {
            var user = results.rows.item(i);
            console.log('用戶(hù)信息: ', user.name, user.age);
        }
    }, function (error) {
        console.log('數(shù)據(jù)讀取失敗: ', error.message);
    });
});

說(shuō)明:查詢(xún)users所有數(shù)據(jù),并將每條數(shù)據(jù)的學(xué)生姓名和年齡打印出來(lái)。

圖片圖片

更新數(shù)據(jù):

var age = 28;var id = 1;db.transaction(function (tx) {    tx.executeSql('UPDATE users SET age =? WHERE id =?', [age, id], function () {        console.log('數(shù)據(jù)更新成功');    }, function (error) {        console.log('數(shù)據(jù)更新失敗: ', error.message);    });});

var age = 28;
var id = 1;
db.transaction(function (tx) {
    tx.executeSql('UPDATE users SET age =? WHERE id =?', [age, id], function () {
        console.log('數(shù)據(jù)更新成功');
    }, function (error) {
        console.log('數(shù)據(jù)更新失敗: ', error.message);
    });
});

說(shuō)明: id 為 1 的用戶(hù)年齡更新為 28 。

圖片圖片

刪除數(shù)據(jù):

var id = 1;db.transaction(function (tx) {    tx.executeSql('DELETE FROM users WHERE id =?', [id], function () {        console.log('數(shù)據(jù)刪除成功');    }, function (error) {        console.log('數(shù)據(jù)刪除失敗: ', error.message);    });});

var id = 1;
db.transaction(function (tx) {
    tx.executeSql('DELETE FROM users WHERE id =?', [id], function () {
        console.log('數(shù)據(jù)刪除成功');
    }, function (error) {
        console.log('數(shù)據(jù)刪除失敗: ', error.message);
    });
});

說(shuō)明:從 users表中刪除 id 為 1 的用戶(hù)數(shù)據(jù)。

四、WebSQL 的使用場(chǎng)景

4.1 用戶(hù)認(rèn)證系統(tǒng)

在用戶(hù)認(rèn)證系統(tǒng)中,WebSQL是一個(gè)不錯(cuò)的選擇,它為用戶(hù)數(shù)據(jù)的安全存儲(chǔ)與高效驗(yàn)證提供了堅(jiān)實(shí)的支持。當(dāng)用戶(hù)進(jìn)行注冊(cè)時(shí),注冊(cè)信息如用戶(hù)名、密碼、郵箱等會(huì)被前端收集,然后通過(guò) WebSQL 存儲(chǔ)到本地?cái)?shù)據(jù)庫(kù)中。在存儲(chǔ)過(guò)程中,可以對(duì)密碼進(jìn)行加密處理,進(jìn)一步保障用戶(hù)數(shù)據(jù)的安全性 。示例:

var username = 'newUser';var encryptedPassword = 'encryptedPwd123'; // 假設(shè)已經(jīng)經(jīng)過(guò)加密處理var email = 'newUser@example.com';db.transaction(function (tx) {    tx.executeSql('INSERT INTO Users (username, password, email) VALUES (?,?,?)', [username, encryptedPassword, email], function () {        console.log('用戶(hù)注冊(cè)信息存儲(chǔ)成功');    }, function (error) {        console.log('用戶(hù)注冊(cè)信息存儲(chǔ)失敗: ', error.message);    });});

var username = 'newUser';
var encryptedPassword = 'encryptedPwd123'; // 假設(shè)已經(jīng)經(jīng)過(guò)加密處理
var email = 'newUser@example.com';
db.transaction(function (tx) {
    tx.executeSql('INSERT INTO Users (username, password, email) VALUES (?,?,?)', [username, encryptedPassword, email], function () {
        console.log('用戶(hù)注冊(cè)信息存儲(chǔ)成功');
    }, function (error) {
        console.log('用戶(hù)注冊(cè)信息存儲(chǔ)失敗: ', error.message);
    });
});

當(dāng)用戶(hù)登錄時(shí),前端獲取用戶(hù)輸入的用戶(hù)名和密碼,可以先從 WebSQL 中查詢(xún)對(duì)應(yīng)的用戶(hù)信息進(jìn)行驗(yàn)證。如果查詢(xún)到匹配的用戶(hù)信息且密碼驗(yàn)證通過(guò),則允許用戶(hù)登錄,大大提高了登錄驗(yàn)證的效率,減少了與服務(wù)器的交互次數(shù),提升了用戶(hù)體驗(yàn) 。

4.2 內(nèi)容管理系統(tǒng)

以 WordPress 和 Drupal 等知名的 CMS 系統(tǒng)為例,WebSQL 在內(nèi)容的創(chuàng)建、更新和刪除操作中發(fā)揮著關(guān)鍵作用。在 WordPress 中,當(dāng)用戶(hù)創(chuàng)建一篇新文章時(shí),文章的標(biāo)題、內(nèi)容、發(fā)布時(shí)間、分類(lèi)等信息會(huì)被保存到 WebSQL 數(shù)據(jù)庫(kù)中。

-- 創(chuàng)建文章表CREATE TABLE IF NOT EXISTS wp_posts (    ID bigint(20) unsigned NOT NULL auto_increment,    post_author bigint(20) unsigned NOT NULL default '0',    post_date datetime NOT NULL default '0000-00-00 00:00:00',    post_content longtext NOT NULL,    post_title text NOT NULL,    post_status varchar(20) NOT NULL default 'publish',    post_name varchar(200) NOT NULL default '',    PRIMARY KEY  (ID),    KEY post_name (post_name),    KEY type_status_date (post_type,post_status,post_date,ID),    KEY post_parent (post_parent),    KEY post_author (post_author));

-- 創(chuàng)建文章表
CREATE TABLE IF NOT EXISTS wp_posts (
    ID bigint(20) unsigned NOT NULL auto_increment,
    post_author bigint(20) unsigned NOT NULL default '0',
    post_date datetime NOT NULL default '0000-00-00 00:00:00',
    post_content longtext NOT NULL,
    post_title text NOT NULL,
    post_status varchar(20) NOT NULL default 'publish',
    post_name varchar(200) NOT NULL default '',
    PRIMARY KEY  (ID),
    KEY post_name (post_name),
    KEY type_status_date (post_type,post_status,post_date,ID),
    KEY post_parent (post_parent),
    KEY post_author (post_author)
);

當(dāng)用戶(hù)更新文章時(shí),WebSQL 會(huì)根據(jù)文章的 ID 找到對(duì)應(yīng)的記錄,更新相應(yīng)的字段。而在刪除文章時(shí),則通過(guò)執(zhí)行 DELETE 語(yǔ)句,將指定 ID 的文章記錄從數(shù)據(jù)庫(kù)中移除,確保內(nèi)容管理的高效與準(zhǔn)確 。

4.3 電商平臺(tái)

在電商平臺(tái)中,WebSQL 貫穿于多個(gè)核心業(yè)務(wù)環(huán)節(jié)。比如在管理產(chǎn)品庫(kù)存方面,WebSQL 可以實(shí)時(shí)記錄產(chǎn)品的庫(kù)存數(shù)量、價(jià)格、規(guī)格等信息。當(dāng)有訂單產(chǎn)生時(shí),通過(guò) WebSQL 可以快速查詢(xún)庫(kù)存情況,判斷是否有足夠的庫(kù)存發(fā)貨 。

var productId = 1;var orderQuantity = 5;db.transaction(function (tx) {    tx.executeSql('SELECT stock FROM Products WHERE product_id =?', [productId], function (tx, results) {        var stock = results.rows.item(0).stock;        if (stock >= orderQuantity) {            // 有足夠庫(kù)存,更新庫(kù)存數(shù)量            tx.executeSql('UPDATE Products SET stock = stock -? WHERE product_id =?', [orderQuantity, productId], function () {                console.log('庫(kù)存更新成功');            }, function (error) {                console.log('庫(kù)存更新失敗: ', error.message);            });        } else {            console.log('庫(kù)存不足');        }    }, function (error) {        console.log('查詢(xún)庫(kù)存失敗: ', error.message);    });});

var productId = 1;
var orderQuantity = 5;
db.transaction(function (tx) {
    tx.executeSql('SELECT stock FROM Products WHERE product_id =?', [productId], function (tx, results) {
        var stock = results.rows.item(0).stock;
        if (stock >= orderQuantity) {
            // 有足夠庫(kù)存,更新庫(kù)存數(shù)量
            tx.executeSql('UPDATE Products SET stock = stock -? WHERE product_id =?', [orderQuantity, productId], function () {
                console.log('庫(kù)存更新成功');
            }, function (error) {
                console.log('庫(kù)存更新失敗: ', error.message);
            });
        } else {
            console.log('庫(kù)存不足');
        }
    }, function (error) {
        console.log('查詢(xún)庫(kù)存失敗: ', error.message);
    });
});

對(duì)于訂單信息,WebSQL 可以存儲(chǔ)訂單編號(hào)、用戶(hù) ID、訂單狀態(tài)、商品明細(xì)等內(nèi)容,方便訂單的跟蹤和管理。在用戶(hù)購(gòu)物車(chē)功能中,WebSQL 可以存儲(chǔ)用戶(hù)添加到購(gòu)物車(chē)的商品信息,包括商品 ID、數(shù)量、價(jià)格等,用戶(hù)在購(gòu)物過(guò)程中隨時(shí)可以查看、修改購(gòu)物車(chē)內(nèi)容,WebSQL 能夠快速響應(yīng)這些操作,提升了用戶(hù)體驗(yàn)也減輕了服務(wù)器的壓力。

五、總結(jié)

需要注意的是,WebSQL 目前已被棄用 ,在使用時(shí)一定要充分考慮瀏覽器兼容性問(wèn)題,避免在項(xiàng)目中盲目使用而導(dǎo)致兼容性風(fēng)險(xiǎn)。在現(xiàn)代前端開(kāi)發(fā)中,IndexedDB 等新興技術(shù)正逐漸成為更優(yōu)的選擇,它們?cè)诠δ芎托阅苌嫌兄錾谋憩F(xiàn)。

WebSQL 作為前端數(shù)據(jù)存儲(chǔ)的一種方式,以其對(duì) SQL 的支持、事務(wù)處理能力以及在谷歌瀏覽器開(kāi)發(fā)者工具中的便捷操作,在特定場(chǎng)景下展現(xiàn)出獨(dú)特的優(yōu)勢(shì)。希望本文對(duì)大家了解該技術(shù)提供一些幫助!

責(zé)任編輯:武曉燕 來(lái)源: 小明互聯(lián)網(wǎng)技術(shù)分享社區(qū)
相關(guān)推薦

2025-03-11 07:30:19

2025-03-10 04:00:00

2024-12-02 11:36:36

2023-12-27 08:24:05

射頻天線電波

2025-04-02 08:00:00

Agent智能人工智能

2020-08-27 07:34:50

Zookeeper數(shù)據(jù)結(jié)構(gòu)

2023-02-06 18:21:00

云原生大數(shù)據(jù)

2024-02-01 11:57:31

this指針代碼C++

2025-05-23 09:38:54

JWT開(kāi)發(fā)Go

2022-06-08 08:11:56

威脅建模網(wǎng)絡(luò)安全網(wǎng)絡(luò)攻擊

2022-02-25 07:34:36

MQTT協(xié)議RabbitMQ

2023-11-06 08:16:19

APM系統(tǒng)運(yùn)維

2022-11-11 19:09:13

架構(gòu)

2023-11-20 08:18:49

Netty服務(wù)器

2023-04-26 15:43:24

容器編排容器編排工具

2019-12-16 08:30:52

Redis日志服務(wù)器

2021-08-04 06:56:49

HTTP緩存前端

2023-12-26 07:33:45

Redis持久化COW

2022-10-28 13:48:24

Notebook數(shù)據(jù)開(kāi)發(fā)機(jī)器學(xué)習(xí)

2025-07-07 07:06:10

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)