针对 极客时间 SQL 必知必会 课程进行总结

什么是 WebSQL

我想你一定知道 Local StorageSession Storag,这些都是 H5 新增的属性,用于本地存储。存储方式为键值对的方式。

Web SQL是前端的数据库,它也是本地存储的一种,使用 SQLite 实现,SQLite 是一种轻量级数据库,它占的空间小,支持创建表,插入、修改、删除表格数据

如何使用

以下是规范中定义的三个核心方法:

  • openDatabase:这个方法使用现有的数据库或者新建的数据库创建一个数据库对象。
  • transaction:这个方法让我们能够控制一个事务,以及基于这种情况执行提交或者回滚。
  • executeSql:这个方法用于执行实际的 SQL 查询。

首先要想使用 WebSQL 首先得判断浏览器是否支持

<script type="text/javascript">
if(!window.openDatabase)
{alert('您的浏览器不支持 WebSQL');
}
</script>

如果浏览器不支持、直接弹出提示框,否则页面不会发生任何变化

打开数据库

var db = window.openDatabase(dbname, version, dbdesc, dbsize,function() {});

openDatabase 方法中一共包括了 5 个参数,分别为数据库名、版本号、描述、数据库大小、创建回调。其中创建回调可以省略

例如创建 王者荣耀数据库

var db = openDatabase('wucai', '1.0', '王者荣耀数据库', 1024 * 1024);

事务操作

使用 transaction 对事务进行处理、执行提交、回滚操作

transaction(callback, errorCallback, successCallback); 

创建数据表

db.transaction(function (tx) {tx.executeSql('CREATE TABLE IF NOT EXISTS heros (id unique, name, hp_max, mp_max, role_main)');
});

插入数据

db.transaction(function (tx) {tx.executeSql('INSERT INTO heros (id, name, hp_max, mp_max, role_main) VALUES (10000, "夏侯惇", 7350, 1746, " 坦克 ")');tx.executeSql('INSERT INTO heros (id, name, hp_max, mp_max, role_main) VALUES (10001, "钟无艳", 7000, 1760, " 战士 ")');tx.executeSql('INSERT INTO heros (id, name, hp_max, mp_max, role_main) VALUES (10002, "张飞", 8341, 100, " 坦克 ")');tx.executeSql('INSERT INTO heros (id, name, hp_max, mp_max, role_main) VALUES (10003, "牛魔", 8476, 1926, " 坦克 ")');tx.executeSql('INSERT INTO heros (id, name, hp_max, mp_max, role_main) VALUES (10004, "吕布", 7344, 0, " 战士 ")');
});

查找数据

db.transaction(function (tx) {tx.executeSql('SELECT * FROM heros', [], function (tx, data) {var len = data.rows.length;console.log('查找到:' +len +'条记录');console.log(data.rows);});
});

总的来说使用 tx.executeSql 来执行操作,增删改查

下面是 极客时间这节课的课后习题,我简单实现了下 题目内容是:模糊查询,输入英雄名称,返回记录.

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>WebSQL Demo</title>
</head>
<body><div class="content"><label for="name"></label><input id="name" type="text" name="name"> <input type="button" value="查询" onclick="query()"></div><script type="text/javascript">if(!window.openDatabase){alert('您的浏览器不支持 WebSQL');}var db = openDatabase('wucai', '1.0', '王者荣耀数据库', 1024 * 1024);db.transaction(function (tx) {tx.executeSql('CREATE TABLE IF NOT EXISTS heros (id unique, name, hp_max, mp_max, role_main)');tx.executeSql('INSERT INTO heros (id, name, hp_max, mp_max, role_main) VALUES (10000, "夏侯惇", 7350, 1746, " 坦克 ")');tx.executeSql('INSERT INTO heros (id, name, hp_max, mp_max, role_main) VALUES (10001, "钟无艳", 7000, 1760, " 战士 ")');tx.executeSql('INSERT INTO heros (id, name, hp_max, mp_max, role_main) VALUES (10002, "张飞", 8341, 100, " 坦克 ")');tx.executeSql('INSERT INTO heros (id, name, hp_max, mp_max, role_main) VALUES (10003, "牛魔", 8476, 1926, " 坦克 ")');tx.executeSql('INSERT INTO heros (id, name, hp_max, mp_max, role_main) VALUES (10004, "吕布", 7344, 0, " 战士 ")');msg = ' 数据表创建成功,一共插入 5 条数据';console.log(msg);});function query(){var name = document.getElementById('name').value;var sql = 'SELECT * FROM heros where name like ?';// 查询数据db.transaction(function (tx) {tx.executeSql(sql, ['%'+name+'%'], function (tx, data) {var len = data.rows.length;console.log('查找到:' +len +'条记录');console.log(data.rows);});});}</script>
</body>
</html>

参考

WebSQL:如何在H5中存储一个本地数据库

HTML5 Web SQL 数据库

关于极客返利

极客返利 是由我个人开发的一款网课返利、返现平台。包含 极客时间返现、拉勾教育返现、掘金小册返现、GitChat返现。目前仅包含这几个平台。后续如果有需要可以考虑其他平台。 简而言之就是:你买课,我返现。让你花更少的钱,就可以买到课程。

https://geek.laravelcode.cn

https://geek.idaka.ink

版权许可

本作品采用 知识共享署名 4.0 国际许可协议 进行许可。

转载无需与我联系,但须注明出处,注明文章来源 WebSQL 的简单使用

联系我

WebSQL 的简单使用相关推荐

  1. HTML5缓存和GPS定位

    HTML5缓存 我们在访问网站的时候,会从网站服务器中下载很多数据,其中包括css文件.图片文件.js文件.音频文件等等,有时候一个页面这种零零散散的文件就要下载上百个,可以打开浏览器的开发者工具,点 ...

  2. 前端缓存 浏览器存储

    目录 前言 一.浏览器存储 0.bfcache 1.WebStorage (1).sessionStorage 对象 (2).localStorage 对象 2.Cookie (1).cookie 与 ...

  3. 【前端】之websql实现增删改查,包含简单示例

    websql增删改查 简单示例 新建数据库 创建表 修改表结构 添加数据 修改数据 删除数据 查询数据 删除表 完整案例 简单示例 新建数据库 创建一个数据库,名为mydb,版本1.0,数据库介绍Te ...

  4. webSql简单探究

    什么是webSql Web Sql Database,中文翻译作"本地数据库",是随着HTML5规范加入的在浏览器端运行的轻量级数据库 在HTML5中,大大丰富了客户端本地可以存储 ...

  5. 基于IndexedDB实现简单文件系统

    现在的indexedDB已经有几个成熟的库了,比如西面这几个,任何一个都是非常出色的. 用别人的东西好处是上手快,看文档就好,要是文档不太好,那就有点尴尬了. dexie.js :A Minimali ...

  6. 通过90行代码学会HTML5 WebSQL的4种基本操作

    Web SQL数据库API是一个独立的规范,在浏览器层面提供了本地对结构化数据的存储,已经被很多现代浏览器支持了. 我们通过一个简单的例子来了解下如何使用Web SQL API在浏览器端创建数据库表并 ...

  7. html让后端删除数据库,Chrome在请求之间删除WebSQL数据库

    因此,我试图创建一个与AngularJS作为前端和玩的离线应用程序! 1.2.5作为后端.在客户端,我创建2页 - main.html中,并且其中在提交上的login.html形式,将创建的WebSQ ...

  8. HTML5安全风险详析之三:WebSQL攻击

    原文地址:http://blog.csdn.net/hfahe/article/details/8049414 一.WebSQL安全风险简介 数据库安全一直是后端人员广泛关注和需要预防的问题.但是自从 ...

  9. 一个简单的Chrome浏览器“清理缓存”插件应用开发

    Chrome浏览器支持用户自定义安装丰富的插件来方便我们的使用,特别是对于一个码农来说,一些丰富的插件能够很方便我们的日常开发.本人就安装了许多方便的插件. 固然商店里有很多插件让我们去淘,但是如果我 ...

最新文章

  1. 用Leangoo管理你的项目
  2. 第一次认识SharePoint...
  3. 【深度学习】——物体检测细节处理(NMS、样本不均衡、遮挡物体)
  4. Logistic回归——二分类 —— matlab
  5. java 关于JDBC和DAO模式使用
  6. ArcGis for JavaScript 4.23版本接入国家天地矢量地图
  7. 7-4 华氏度转摄氏度 (5分)_PTA_Java基础练习
  8. 树莓派python界面编程_树莓派PythonGUI学习
  9. Linux加密框架中的算法和算法模式(2)——模式介绍
  10. 解决Vue history模式下路由跳转时页面404问题
  11. 声网实时连麦互动助力CCtalk万人互动课堂
  12. Oracle如何根据一个日期计算同比环比的日期
  13. Unambiguous Text Localization, Retrieval,and Recognition for Cluttered Scenes
  14. leetcode刷题第21天——1763,117,572
  15. 三十二楼层选几层最好_32楼层的选择几层最好 住楼房几层最好风水
  16. 人工智能自动sql优化工具--SQLTuning for SQL Server
  17. Android JNI开发入门与实战
  18. excel多表数据汇总
  19. 紫外线消毒器:飞利浦紫外线杀菌灯TUV30W型号
  20. Java-使数值不使用科学计数法

热门文章

  1. 中国乙烯-丙烯酸酯橡胶(AEM)市场调研报告(2022版)
  2. 【python3】5.正则表达式
  3. 【附源码】计算机毕业设计SSM校园二手拍卖网
  4. SLAM入门到入土:VS Code里使用Remote-ssh远程开发树莓派
  5. 深圳c语言程序设计,深圳零基础玩转C语言编程
  6. Centos9网卡配置
  7. android10一键root权限获取,安卓一键root,小编教你安卓手机怎么获取root权限
  8. 基于Bayer的数字图像还原
  9. 计算机系统集成 继续教育,2018年计算机系统集成中高级项目经理继续教育考试试题.doc...
  10. 圣战之系谱 恋爱系统详解