HTML5系列:HTML5本地存储
1. Web Storage存储
HTML4在客户端存储数据通常使用Cookie存储机制将数据保存在用户的客户端,但使用Cookie方式存储客户端数据存在一系列的制约发展因素,如限制存储数据空间大小、数据安全性差等。
HTML5中新增两种数据存储方式:Web Storage和Web SQL Database。前者可用于临时或永久保存客户端的少量数据,后者是客户端本地化的一套数据库系统,可以将大量的数据保存在客户端,而无需与服务器交互。
Web Storage页面存储根据Web Storage API区分会话数据与长期数据,相应的API类型分为两种:
sessionStorage(保存会话数据)
localStorage(在客户端长期保存数据)
两者的区别在于sessionStorage为临时保存,localStorage为永久保存。
1.1 sessionStorage对象
sessionStorage对象保存数据实质的保存在session对象中,用户在打开浏览器时,可以查看操作过程中要求的临时数据,一旦关闭浏览器,所有使用sessionStorage对象保存的数据都将会丢失。
sessionStorage对象保存数据:
sessionStorage.setItem(key, value);
其中,key表示存储数据的键名,value表示存储数据的键值。
sessionStorage对象读取数据:
sessionStorage.getItem(key)
其中,key表示存储数据的键名,该方法将返回一个指定键名的键值,如果不存在,则返回null。
1.2 localStorage对象
sessionStorage对象只能保存用户临时的会话数据,关闭浏览器后,数据都将丢失。localStorage对象可以将数据长期保存在客户端,直至人工清除为止。
localStorage对象保存数据:
localStorage.setItem(key, value)
其中,key表示存储数据的键名,value表示存储数据的键值。
localStorage对象读取数据:
localStorage.getItem(key)
其中,key表示存储数据的键名,该方法将返回一个指定键名的键值,如果不存在,则返回null。
localStorage对象删除数据:
localStorage.removeItem(key)
其中,key表示要删除的存储数据的键名。
清空localStorage对象数据:
localStorage.clear()
该方法无参数,表示清空全部的数据。
遍历localStorage数据:
遍历localStorage对象保存的数据,需要使用localStorage对象的两个属性:length与key。length表示localStorage对象中保存数据的总条数,key表示保存数据时的键名,key常与索引号(index)配合使用,表示第几条键名对应的数据记录。其中,索引号(index)从0开始。
for (var index =0; index < localStorage.length; index++) {
var key = localStorage.key(index);
var value = localStorage.getItem(key);
}
使用JSON对象存取数据:
在HTML5中可以通过localStorage数据与JSON对象进行转换,如果要将localStorage对象数据转换成JSON对象,需要调用JSON对象的parse()方法。
JSON.parse(data);
其中,data表示localStorage对象获取的数据,调用该方法将返回一个装载data数据的JSON对象。可以使用stringify()方法将一个实体对象转换为JSON格式的文本数据。
JSON.stringify(data);
其中,data表示任意的实体对象,调用该方法将返回一个由实体对象转换成JSON格式的文本数据集。
示例
var userdata = new Object();
userdata.UserName = 'UserName';
userdata.Password = 'Password';
var struserdata = JSON.stringify(userdata);
localStorage.setItem('user', struserdata);
2. Web SQL数据库
Web Storage存储空间只有5MB,仅提供键值存储的方式。Web SQL数据库(Web SQL DataBase, WebDB)内置SQLite数据库,对数据库的操作可以通过调用executeSql()方法来实现,允许使用JavaScript代码进行数据库操作。
2.1 打开与创建数据库
通过WebD版进行本地数据的存储,需要先打开或创建一个数据库,打开或创建数据库的API调用代码格式:
openDatabase(DBName, DBVersion, DBDescribe, DBSize, Callback());
其中,DBName表示数据库名称,DBVersion表示版本号,DBDescribe表示对数据库的描述,DBSize表示数据库的大小,单位为字节,如果是2MB,写成2*1024*1024,Callback()表示创建或打开数据库成功之后执行的一个回调函数。
调用该方法时,如果指定的数据库名存在,则打开该数据库;否则,新创建一个指定名称的空数据库。
示例:
var db = openDatabase("MyDB", "1.0", "My Web Database", 2 * 1024 * 1024, function () {
document.getElementById("result").innerHTML = "数据库创建成功!";
});
2.2 执行事务
在打开/创建数据库之后,可以使用数据库对象中的transaction()方法执行事务处理。每一个事务处理请求都作为数据库的独立操作,避免在处理数据时发生冲突。调用的语法格式:
transaction(TransCallback, ErrorCallback, SuccessCallback);
其中,TransCallback表示事务回调函数,可以写入需要执行的SQL语句;ErrorCallback表示执行SQL语句出差时的回调函数,SuccessCallback表示执行SQL语句成功时的回调函数。
示例:
var db = openDatabase("MyDB", "1.0", "My Web Database", 2 * 1024 * 1024);
if (db) {
var strSql = "create table if not exists User(UserID unique, UserName text, Password text)";
db.transaction(function (tx) {
tx.executeSql(strSql);
}, function () {
document.getElementById("result").innerHTML = "事务执行失败!";
}, function () {
document.getElementById("result").innerHTML = "事务执行成功!";
})
}
2.3 插入数据
执行SQL语句的executeSql()方法,调用格式:
executeSql(strSQL, [Arguments], SuccessCallback, ErrorCallback);
其中,strSQL表示需要执行的SQL语句, Arguments表示语句需要的参数,SuccessCallback表示SQL语句执行成功时的回调函数,ErrorCallback表示SQL执行出错时的回调函数。
在使用executeSql()方法执行SQL语句时,允许使用“?”作为语句中的形参,与形参对应的实参放置在第二个参数Arguments中。
示例:
executeSql("insert into User values (?,?,?)", ["1", "TestUserName", "TestPassword"]);
var db = openDatabase("MyDB", "1.0", "My Web Database", 2 * 1024 * 1024);
if (db) {
var strSql = "insert into User values (?, ?, ?)";
db.transaction(function (tx) {
tx.executeSql(strSql, [
document.getElementById("txtUserID").value,
document.getElementById("txtUserName").value,
document.getElementById("txtPassword").value
]);
}, function () {
document.getElementById("txtUserID").value = "";
document.getElementById("txtUserName").value = "";
document.getElementById("txtPassword").value = "";
document.getElementById("result").innerHTML = "一条记录添加成功!";
}, function (tx, ex) {
document.getElementById("result").innerHTML = ex.message;
})
}
HTML5系列:HTML5本地存储的更多相关文章
- HTML5新增的本地存储功能(笔记)
HTML5新增的本地存储功能分为两种,分别对应两个JS对象:①本地存储对应localStorage对象,主要用于长期保存整个网站的数据(这些数据可以永久保存在客户端电脑硬盘内).②会话存储对应sess ...
- HTML5教程之本地存储SessionStorage
SessionStorage: 将数据保存在session对象中,所谓session是指用户在浏览某个网站时,从进入网站到浏览器关闭所经过的这段时间会话,也就是用户浏览这个网站所花费的时间就是sess ...
- HTML5 使用localstorage 本地存储
HTML 本地存储介绍 最早的 Cookies 自然是大家都知道,问题主要就是太小,大概也就 4KB 的样子,而且 IE6 只支持每个域名20个cookies,太少了.优势就是大家都支持,而且支持得还 ...
- 初识html5的localStorage本地存储
一.概述 HTML5 提供了两种在客户端存储数据的新方法: localStorage - 没有时间限制的数据存储 sessionStorage - 针对一个 session 的数据存储 之前,这些都是 ...
- HTML5规范的本地存储
在HTML5 中定义了两种本地存储的,Web Storage 和本地数据库 SQL Database . 用来检查判断浏览器是否支持 Web Storage if(window.localStorag ...
- HTML5学习总结——本地存储
一.HTML4客户端存储 B/S架构的应用大量的信息存储在服务器端,客户端通过请求响应的方式从服务器获得数据,这样集中存储也会给服务器带来相应的压力,有些数据可以直接存储在客户端,传统的Web技术中会 ...
- HTML5开发学习:本地存储Web Sql Database
Web Sql Database,中文翻译作"本地数据库",是随着HTML5规范加入的在浏览器端运行的轻量级数据库. 在HTML5中,大大丰富了客户端本地可以存储的内容 ...
- HTML5 JS API 本地存储LocalStorage基本操作
LocalStorage:使用方法与SessionStorage如出一辙,如下代码所示:此对象主要有两个方法:保存数据:localStorage.setItem(Key, value);读取数据:lo ...
- Html5中的本地存储
Web Storage web storage页面存储是html5为数据存储在客户端提供的一项重要功能,由于web storage API能够区分会话数据与长期数据.因此,相应API也分为两种: se ...
- html5画图和本地存储
<!DOCTYPE HTML><html><body> <canvas id="myCanvas" width="200&quo ...
随机推荐
- shell脚本生成限定范围的随机数
#!/bin/bash +)) 这串代码实现了随机生成从1~50之间是数 这串代码特别简单,就是利用RANDOM这个随机数生成器进行取余就能够实现,至于为什么取余时需要+1是因为在取余时如果被整除那么 ...
- Spark Application的调度算法
要想明白spark application调度机制,需要回答一下几个问题: 1.谁来调度? 2.为谁调度? 3.调度什么? 3.何时调度? 4.调度算法 前四个问题可以用如下一句话里来回答:每当集群资 ...
- bzoj1266最短路+最小割
本来写了spfa wa了 看到网上有人写Floyd过了 表示不开心 ̄へ ̄ 改成Floyd试试... 还是wa ヾ(。`Д´。)原来是建图错了(样例怎么过的) 结果T了 于是把Floyd改回spfa 还 ...
- C语言与java 20155317 王新玮第二次
20155317 王新玮第二次写作感想 你有什么技能比大多数人(超过90%以上)更好? 刚刚看到这个题目,我的首先想到的是会一些中医,懂得中医的理论框架知识,懂得大部分的中医脉象,能够解决日常生活 ...
- Total Commander解压位置
TC解压到当前文件夹下 TC也是用了一段时间,现在勉强也算用习惯了,今天在解压文件的时候感觉步骤麻烦,之前解压都是解压到另一个窗口,所以一直是ALT+8同步窗口,然后解压文件.但一般解压文件都是解压到 ...
- 关于Android中res目录strings.xml文件中的转义字符之笔录
res目录strings.xml文件中的转义字符: ------------------> 代表着一个汉字的位置: ---- ...
- js中this的用法
经过近几周的模拟面试题,我查询了一些资料,今天就来说说,在js中this的用法吧.方法有四:第一,用作全局变量,第二,用作表该对象,第三,用作构造函数,第四,用作call和applay
- tabhost 下 setOnItemClickListener失效的问题
分析了一下代码,应该是tabhost 的ontabchangedListener接管了下面应该由setOnItemClickListener接管的部分,导致不能相应setOnItemClickList ...
- 基于webdriver的jmeter性能测试-Eclipse+Selenium+JUnit生成jar包
续接 打开eclipse新建java项目,如下图所示: 输入项目名称后点击"完成"按钮,如下图所示: eclipse中新建一个java项目,如下图所示: 添加类库,如下图所示: 在 ...
- 基于webdriver的jmeter性能测试-Selenium IDE
前言: 由于某些项目使用了WebGL技术,需要高版本的Firefox和Chrome浏览器才能支持浏览,兼容性很弱,导致Loadrunner和jmeter(badboy)无法正常进行录制脚本.因此我们采 ...