前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >WebSQL 的简单使用

WebSQL 的简单使用

作者头像
hedeqiang
发布2019-12-17 21:40:42
1K0
发布2019-12-17 21:40:42
举报
文章被收录于专栏:LaravelCodeLaravelCode

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

什么是 WebSQL

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

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

如何使用

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

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

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

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

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

打开数据库
代码语言:javascript
复制
var db = window.openDatabase(dbname, version, dbdesc, dbsize,function() {});

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

例如创建 王者荣耀数据库

代码语言:javascript
复制
var db = openDatabase('wucai', '1.0', '王者荣耀数据库', 1024 * 1024);
事务操作

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

代码语言:javascript
复制
transaction(callback, errorCallback, successCallback); 
创建数据表
代码语言:javascript
复制
db.transaction(function (tx) {
     tx.executeSql('CREATE TABLE IF NOT EXISTS heros (id unique, name, hp_max, mp_max, role_main)');
});
插入数据
代码语言:javascript
复制
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, " 战士 ")');
});
查找数据
代码语言:javascript
复制
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 来执行操作,增删改查

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

代码语言:javascript
复制
<!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 数据库

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 什么是 WebSQL
  • 如何使用
    • 打开数据库
      • 事务操作
        • 创建数据表
          • 插入数据
            • 查找数据
            相关产品与服务
            数据库
            云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档