当前位置: 首页 > news >正文

html5的本地存储

html5提供了四种在客户端存储数据的新方法:
localStorage,sessionStorage,globalStorage,WebSql Database
前面三个适用于存储少量数据,而Web Sql Database适用于存储大型的,复杂的数据。

与cookie的区别:
web存储安全性软高,在数据量上可以达到5M,而cookie最多也就4KB,或20个key/value对。

localStorage与sessionStorage有相同Api

localStorage.length 获取storage中的个数
localStorage.key(n) 获取storage中第n个键值对的键
localStorage.key = value
localStorage.setItem(key, value) 添加
localStorage.getItem(key) 获取
localStorage.removeItem(key) 移除
localStorage.clear() 清除

 例如:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body></body>
<script>
    //cookie关闭浏览器就会消失
    document.cookie = "name=test";
    console.log(document.cookie);

    //关闭浏览器不会消失
    localStorage.setItem("name", "test2");
    console.log(localStorage.getItem("name"));

    //关闭浏览器会消失
    sessionStorage.setItem("name", "test3");
    console.log(sessionStorage.getItem("name"));

    for(var ix = 1; ix < 10; ++ix) {
        localStorage.setItem(ix, ix);
    }
    console.log(localStorage.length);
    console.log(localStorage.key(2));

</script>
</html>

 WebSql Database

三个核心方法
openDatabase 这个方法使用现有数据库或创建新数据库
transaction 这个方法允许我们根据情况控制事务提交或回滚
executeSql 这个方法用于执行sql查询

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body></body>
<script>
    if(window.openDatabase) {
        //openDatabase参数:数据库名,版本号,数据库描述,数据大小,回调函数
        var db = openDatabase("test", "1.0", "测试库", 1024*1024);

        db.transaction(function(fx) {
            fx.executeSql(
                "create table users(id int, name text)",
                //替换语句中问号的内容
                [],
                //成功时的回调函数
                function(fx, result) {
                    console.log("创建表成功");
                },
                //失败时的回调函数
                function(fx, error) {
                    console.log("创建表失败");
                }
            );

            //插入数据
            fx.executeSql(
                "insert into users(id,name) values(?, ?)",
                [1, "test"],
                function(fx, result) {
                    console.log("插入数据成功");
                },
                function(fx, error) {
                    console.log("插入数据失败");
                }
            );

            //修改数据
            fx.executeSql(
                "update users set name=? where id=?",
                ["wohehe", 1],
                function(fx, result) {
                    console.log("更新数据成功");
                },
                function(fx, error) {
                    console.log("更新数据失败");
                }
            );

            //查询数据
            fx.executeSql(
                "select * from users",
                [],
                function(fx, result) {
                    console.log("查询数据成功");

                    //遍历查询数据
                    var data = result.rows;
                    for(var ix = 0; ix < data.length; ++ix) {
                        console.log(data[ix]["id"] + ":" + data[ix]["name"]);
                    }
                },
                function(fx, error) {
                    console.log("查询数据失败");
                }
            );

            //删除数据
            fx.executeSql(
                "delete from users where id=?",
                [1],
                function(fx, result) {
                    console.log("删除数据成功");
                },
                function(fx, error) {
                    console.log("删除数据失败");
                }
            );

            //删除表
            fx.executeSql(
                "drop table users",
                [],
                function(fx, result) {
                    console.log("删除表成功");
                },
                function(fx, error) {
                    console.log("删除表失败");
                }
            );
        });
    }
</script>
</html>

 

相关文章:

  • 设计模式之创建型模式—— 1.1 简单工厂模式
  • javascript UniqueID属性
  • 与Susan Fowler探讨生产就绪微服务之问答
  • Android 老罗视频教程笔记
  • apache 开启压缩功能
  • Porter/Duff,图片加遮罩setColorFilter
  • MySQL基础备忘(3)之update多表更新
  • iPhone 丢失
  • Java IO流学习总结四:缓冲流-BufferedReader、BufferedWriter
  • Ant多渠道批量打包
  • CCF201409-4 最优配餐(100分)
  • ios的delegate机制
  • 同义词
  • MPLS和LDP标签分发
  • JSON 生成 C# Model
  • 2018一半小结一波
  • 2019.2.20 c++ 知识梳理
  • E-HPC支持多队列管理和自动伸缩
  • Java 实战开发之spring、logback配置及chrome开发神器(六)
  • JSONP原理
  • JS数组方法汇总
  • js中forEach回调同异步问题
  • React中的“虫洞”——Context
  • spring boot 整合mybatis 无法输出sql的问题
  • tab.js分享及浏览器兼容性问题汇总
  • Vue 2.3、2.4 知识点小结
  • vue 配置sass、scss全局变量
  • Vue2.0 实现互斥
  • Webpack入门之遇到的那些坑,系列示例Demo
  • 给自己的博客网站加上酷炫的初音未来音乐游戏?
  • 简析gRPC client 连接管理
  • 将 Measurements 和 Units 应用到物理学
  • 警报:线上事故之CountDownLatch的威力
  • 看域名解析域名安全对SEO的影响
  • 聊聊hikari连接池的leakDetectionThreshold
  • 探索 JS 中的模块化
  • 问:在指定的JSON数据中(最外层是数组)根据指定条件拿到匹配到的结果
  • 学习JavaScript数据结构与算法 — 树
  • 终端用户监控:真实用户监控还是模拟监控?
  • 【干货分享】dos命令大全
  • ​一、什么是射频识别?二、射频识别系统组成及工作原理三、射频识别系统分类四、RFID与物联网​
  • ​云纳万物 · 数皆有言|2021 七牛云战略发布会启幕,邀您赴约
  • # 飞书APP集成平台-数字化落地
  • #我与Java虚拟机的故事#连载15:完整阅读的第一本技术书籍
  • $.ajax()参数及用法
  • (70min)字节暑假实习二面(已挂)
  • (C#)获取字符编码的类
  • (Pytorch框架)神经网络输出维度调试,做出我们自己的网络来!!(详细教程~)
  • (分享)一个图片添加水印的小demo的页面,可自定义样式
  • (详细版)Vary: Scaling up the Vision Vocabulary for Large Vision-Language Models
  • (轉貼) VS2005 快捷键 (初級) (.NET) (Visual Studio)
  • .Net MVC4 上传大文件,并保存表单
  • .Net(C#)常用转换byte转uint32、byte转float等
  • .Net接口调试与案例
  • ?