Web SQL介绍,web sql中增删改查、数据存储位置、运行脚本、建表建库

9 篇文章 0 订阅
1 篇文章 0 订阅

Web SQL:

Web SQL是一种简单的存在服务器中的数据库,运行在javascript脚本中,其数据储存在计算机Application中Web SQL中。

web sql提供了三个核心方法:

1.openDatabase(‘dbname’,‘edition’,‘explain’,‘size’),此方法用于查找数据库,如果没有则会创建一个新的数据库,其参数依次代表:数据库名称,版本号,描述文本,数据库大小。

2.transaction(),用于控制一个数据库,里面传入一个函数,函数的参数作为操作数据库的对象。

3.executeSql(sql,),用于执行SQL语句;参数一表示执行的SQL语句;参数二表示行分隔符,当返回的结果有多行时,使用此参数做为行分隔符,一般情况下传入null或[],不传会报错;参数三可传入一个函数,函数的第二个参数则为数据对象;参数四为SQL语句查询时的参数,常用于where SQL语句查询。

web sql增删改查案例:

	<script>
        // 1.查询或创建一个web数据库:
        var db = openDatabase('mywebdbs', '1.0', 'Test DB', 1 * 1024 * 1024);
    
        // 2.transaction对数据库db进行操作,里面传入函数,函数参数为被操作对象:(数据库的增)
        db.transaction(function(dbtest) {
            // 1.通过executeSql执行SQL语句,create table if not exists CHART,来判断是否存在表CHART,不存在则创建名为CHART的表
            dbtest.executeSql('CREATE TABLE IF NOT EXISTS CHART (id unique, log)');
    
            // 2.通过executeSql执行SQL语句,向CHART表中插入一条数据结构为(id,log)值为(1,"hello word")的数据:
            dbtest.executeSql('INSERT INTO CHART (id,log) VALUES (1,"hello word")');
            dbtest.executeSql('INSERT INTO CHART (id,log) VALUES (2,"my name is jack")');
            // 扩展:dbtest.executeSql('INSERT INTO CHART (id,log) VALUES (?, ?)', [e_id, e_log]);里面的SQL语句为动态的插入数据
        });
    
        // 3.通过transaction对数据库db进行操作,里面传入函数,函数参数为被操作对象:(数据库的查(读))
        db.transaction(function(dbtest) {
            // 1.通过executeSql执行SQL语句:'SELECT * FROM CHART',表示从CHART表中查询所有数据,按照下下面方式接收处理数据(参数二不能省略,一般为[]或null),每组数据都是一个对象,可以通过console.log(results.rows)查看数据结构,
            dbtest.executeSql('SELECT * FROM CHART', null, function(dbtest, results) {
                // 2.results返回的是一个对象,其中属性rows里面存着插入的数据对象和length属性,因此可以通过results.rows.length来控制循环次数打印每个对象的数据
                for (var i = 0; i < results.rows.length; i++) {
                    console.log('id:' + results.rows[i].id + '--' + 'log:' + results.rows[i].log);
                };
            }, null);
        });
    
        // 4.通过transaction对数据库db进行操作,里面传入函数,函数参数为被操作对象:(数据库的改)
        db.transaction(function(dbtest) {
            // 1.通过executeSql执行SQL语句,'UPDATE CHART SET log='update logs!' WHERE id=1',表示从CHART表中根据id查询到该条数据,并修改log的值
            dbtest.executeSql('UPDATE CHART SET log="update logs!" WHERE id=2');
            // 扩展:dbtest.executeSql('UPDATE CHART SET log='新值' WHERE id=?', [id]),里面的SQL语句支持动态传入id值进行修改数据
        });
    
        // 5.通过transaction对数据库db进行操作,里面传入函数,函数参数为被操作对象:(数据库的删)
        db.transaction(function(dbtest) {
            // 1.通过executeSql执行SQL语句,'DELETE FROM CHART  WHERE id=1',表示从CHART表中根据id删除该条数据:
            dbtest.executeSql('DELETE FROM CHART  WHERE id=1');
            // 扩展:dbtest.executeSql('DELETE FROM CHART WHERE id=?', [id]),里面的SQL语句支持动态传入id值进行删除数据
        });
    </script>

前端存储数据常见还有:
cookie: http做会话存储,存储在每次数据请求中,周期为一个会话结束。

session:http做会话存储,存储在服务端,比cookie安全。

localStorage:使用简单,但是数据大小5M内,数据永久存在浏览器,除非手动删除,否则不会自动删除。

sessionStorage、使用简单,但是数据大小5M内,临时存储,浏览器被关闭时自动删除数据。

indexedDB:存储空间大,但是操作繁琐不易上手,一般不太用。

localforage:一个 JavaScript 库,通过简单类似 localStorage API 的异步存储来改进你的 Web 应用程序的离线体验。它能存储多种类型的数据,而不仅仅是字符串,且采用优雅降级的设计理念,当浏览器不兼容localforage时,它会使用localStorage, 缺点是需要手动下载引入项目(实际中不推荐使用),下面简单介绍下api:

 <!-- 使用localForage时先引入或模块化导入: -->
  <script src="https://cdn.jsdelivr.net/npm/localforage@1.10.0/dist/localforage.min.js"></script><script>
    // 1.setItem: 存储数据,第一个参数为存储的key值,参数二为数据(支持多种类型),返回一个Promise可以通过then异步在回调函数中干其他事
    localforage.setItem('key1', {naem: 'jack', age: 18}).then((res) => {
      console.log(res) // {naem: 'jack', age: 18}
    })
    // 也可以直接通过回调函数执行其他任务,但是回调函数参数是获取不到储存的值的:
    localforage.setItem('key2', 'hello word!', (res) => {
      console.log(res) // null
      localforage.getItem('key2', (err, value) => {  
        console.log(value) // hello word!
      })
    })

    // 2.getItem读取数据:参数一为key值,参数二为回调函数,回调函数中参数一为error对象,参数二为数据
    localforage.getItem('key2', (err, value) => {  
      console.log(value) // hello word!
    })
  </script>

提示:本文图片等素材来源于网络,若有侵权,请发邮件至邮箱:810665436@qq.com联系笔者 删除。
笔者:苦海

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

苦海123

快乐每一天!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值