在vue中使用HTML5 Web SQL 浏览器数据库

1 篇文章 0 订阅
这篇博客介绍了HTML5的WebSQL数据库,虽然不是HTML5规范的一部分,但它是浏览器中实现客户端数据库的一种方式。文章通过示例代码展示了如何使用JavaScript进行数据库的创建、数据的增删改查操作,包括openDatabase、transaction和executeSql等核心方法的使用。示例代码中还包含了完整的Vue组件,演示了在Web应用中如何交互操作WebSQL。
摘要由CSDN通过智能技术生成

HTML5 Web SQL 数据库

Web SQL 是在浏览器上模拟数据库,可以使用 JS 来操作 SQL 完成对数据的读写。\

Web SQL 数据库 API 并不是 HTML5 规范的一部分,但是它是一个独立的规范,引入了一组使用 SQL 操作客户端数据库的 APIs。

如果你是一个 Web 后端程序员,应该很容易理解 SQL 的操作。

Web SQL 数据库可以在最新版的 Safari, Chrome 和 Opera 浏览器中工作。


核心方法

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

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

demo示例代码:

<template>
  <div>
    <h3>HTML5 Web SQL 数据库</h3>
    <button @click="openWebSQL">打开(创建) Web SQL</button>
    <button @click="addItem">新增一条记录</button>
    <button @click="updateItem">修改第一条数据</button>
    <button @click="deleteItem">删除一条记录</button>
    <button @click="getData">查询数据</button>
  </div>
</template>

<script>
export default {
  data() {
    return {
      MySQL: null
    };
  },
  created() {
  },
  mounted() {},
  methods: {
    openWebSQL() {
      //我们可以使用 openDatabase() 方法来打开已存在的数据库,如果数据库不存在,则会创建一个新的数据库
      this.MySQL = openDatabase("mydb01", "1.0", "Test DB", 2 * 1024 * 1024);

      /**
       * 插入数据
       * 在执行上面的创建表语句后,我们可以插入一些数据:
       */
      this.MySQL.transaction(function(tx) {
        const d = tx.executeSql(
          "CREATE TABLE IF NOT EXISTS myTable (id unique, log)"
        );
        tx.executeSql('INSERT INTO myTable (id, log) VALUES (1, "你好,同学")');
        tx.executeSql('INSERT INTO myTable (id, log) VALUES (2, "甲乙丙丁")');
      });
    },
    //新增一条记录
    addItem() {
      this.MySQL.transaction(function(tx) {
        //先查
        tx.executeSql("Select * FROM myTable", [], (tx, results) => {
          console.log("查询结果 =>", results);
          console.log("查询数据长度 =>", results.rows.length);

          //我再根据查询已有数据的最后一条数据的id + 1 生成新id
          let e_id = results.rows[results.rows.length - 1].id + 1;
          let e_log = `Jason Ma到此一游${e_id}`;
          tx.executeSql("INSERT INTO myTable (id,log) VALUES (?, ?)", [
            e_id,
            e_log
          ]);
        });
      });
    },
    //修改一条记录
    updateItem() {
      this.MySQL.transaction(function(tx) {
        tx.executeSql("UPDATE myTable SET log='大王叫我来巡山...' WHERE id=1");
      });
    },
    //删除一条记录
    deleteItem(id = 3) {
      this.MySQL.transaction(function(tx) {
        //既可以动态id方式,也可以
        tx.executeSql("DELETE FROM myTable WHERE id=?", [id]);
        // tx.executeSql("DELETE FROM myTable WHERE id=2");
      });
    },
    //查询
    getData() {
      this.MySQL.transaction(function(tx) {
        tx.executeSql("Select * FROM myTable", [], (tx, results) => {
          console.log("查询结果 =>", results);
          console.log("查询数据长度 =>", results.rows);
        });
      });
    }
  }
};
</script>

<style></style>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值