除了Canvas元素外,HMTL5另外一个新增的非常重要的功能是可以在客户端本地存储数据库的Web Storage。本文就介绍下Web Storage以及SQLLite操作。

Web Storage分为两类:

- sessionStorage:数据保存在session 对象中(临时)

- localStorage:数据保存在本地硬件设备中(永久)

sessionStorage:

保存数据的两种方法:

  sessionStorage.setItem('key','val');
sessionStorage.key = 'val';

读取数据的两种方法:

  sessionStorage.getItem('key');
var temp = sessionStorage.key;

清除数据的方法:

  sessionStorage.removeItem('key')

注意:键名即'key'是不能重复的,键名页也不能删除。

示例:

  sessionStorage.world='hello world';
sessionStorage.setItem('kitty','hello kitty');

在javascript中运行上述代码,用浏览器打开该页面后按F12呼出控制台,选择Resources标签页下的Session Storage选项,可以看到上述两条数据已经被存入了:

当执行清除后:

  sessionStorage.removeItem('kitty');

相应键名的数据被删除:

现在sessionStorage中插入如下数据:

获取session中的数据条数(sessionStorage.length),并在控制台打印出来:

  console.log(sessionStorage.length);

获取指定索引下标对应的键名(sessionStorage.key(index)):

  console.log(sessionStorage.key(1));

清除所有数据:

  sessionStorage.clear();

通过window对象对storage添加监听事件:

window.addEventListener(‘storage’,function(event){ });
event的属性值:
- event.key:storage中被修改的键值
- event.oldValue:被修改前的值
- event.newValue:被修改后的值
- event.url:storage 中值得页面URL地址
 

localStorage与sessionStorage使用方法一致,只需要变下名字

区别在于localSorage是永久保存,而sessionStorage会在浏览器关闭时自动清除。sessionStorage可以用来暂时保存登陆后的用户名等信息。

实用的本地数据库:

HTML5 内置了两种数据库一种是SQLLite 可以通过SQL语言来访问的文件型SQL数据库,另外一种是indexedDB的noSQL类型的数据库。
这里主要介绍下SQLLite
创建访问数据库对象:
var db=openDatabase("gameDB","1.0","游戏数据库",1024*1024);

参数:1.数据库名,如果存在就打开,如果不存在就创建一个 2.版本号,默认1.0 3.数据库描述 4.数据库大小,单位字节,1024*1024即1M,一般1M到2M就够用了。

访问数据库:

db.transaction(function(tx){
tx.executeSql("SQL语句",[],function(tx,rs){},function(tx,err){});
});

参数:1.SQL语句 2.SQL参数组 3.执行SQL成功时的回调函数 4.执行SQL失败时的回调函数。

其中执行成功回调函数中的rs代表结果集,其中的rows属性保存了每条数据。

用之前做的游戏举个实例:

    var username=$("username").value;
var db=openDatabase("gameDB","1.0","游戏数据库",1024*1024);
db.transaction(function(tx){
tx.executeSql("create table t_defenders (username varchar(20),score int)",[],function(tx,rs){},function(tx,err){});
});
db.transaction(function(tx){
tx.executeSql("insert into t_defenders values(?,?)",[username,killNum*100],function(tx,rs){},function(ts,err){});
});

作用为当游戏结束时,在本地数据库中创建名为t_defenders的表,之后获取名字与得分存入表中:

点击确定后F12打开控制台,在Resources下面的Web SQL中可以看到存入的数据:

接下来查看数据:

 var db=openDatabase("gameDB","1.0","游戏数据库",1024*1024);
db.transaction(function(tx){
tx.executeSql("select * from t_defenders order by score desc limit 5",[],function(tx,rs){
var row = rs.rows;
$("score-table").innerHTML = "";
var str = "<tr><th>名次</th><th>玩家姓名</th><th>分数</th></tr>";
for(var i = 0;i<row.length; i++){
str += "<tr><td>"+(i+1)+"</td><td>"+row.item(i).username+"</td><td>"+row.item(i).score+"</td></tr>";
}
$("score-table").innerHTML += str;
},function(ts,err){});

大致作用为通过rs.rows获得表中的数据,动态的加入到我们希望显示的地方:

本地数据库的好处在于一些像游戏成绩等简单的数据并不像通过node.js连接MySQL并添加数据那么麻烦,仅仅用HTML5中的本地数据库就可以很方便的对这些数据进行操作。

感谢您的浏览,希望能对您有所帮助。

HTML5新增核心工具——本地存储的更多相关文章

  1. HTML5新增核心工具——canvas

    原文:HTML5新增核心工具--canvas Canvas元素称得上是HTML5的核心所在,它是一个依靠JavaScript绘制华丽图像的元素. Canvas由一个可绘制地区HTML代码中的属性定义决 ...

  2. 小强的HTML5移动开发之路(19)——HTML5 Local Storage(本地存储)

    来自:http://blog.csdn.net/dawanganban/article/details/18218701 一.浏览器存储的发展历程 本地存储解决方案很多,比如Flash SharedO ...

  3. HTML5本地存储——IndexedDB(一:基本使用)

    在HTML5本地存储——Web SQL Database提到过Web SQL Database实际上已经被废弃,而HTML5的支持的本地存储实际上变成了 Web Storage(Local Stora ...

  4. (转)HTML5开发学习(2):本地存储之localStorage 、sessionStorage、globalStorage

    原文:http://www.cnblogs.com/xumingxiang/archive/2012/03/25/2416386.html HTML5开发学习(2):本地存储之localStorage ...

  5. HTML5本地存储——IndexedDB

    在HTML5本地存储——Web SQL Database提到过Web SQL Database实际上已经被废弃,而HTML5的支持的本地存储实际上变成了 Web Storage(Local Stora ...

  6. HTML5新增的本地存储功能(笔记)

    HTML5新增的本地存储功能分为两种,分别对应两个JS对象:①本地存储对应localStorage对象,主要用于长期保存整个网站的数据(这些数据可以永久保存在客户端电脑硬盘内).②会话存储对应sess ...

  7. HTML5 学习总结(三)——本地存储

    一.HTML4客户端存储 B/S架构的应用大量的信息存储在服务器端,客户端通过请求响应的方式从服务器获得数据,这样集中存储也会给服务器带来相应的压力,有些数据可以直接存储在客户端,传统的Web技术中会 ...

  8. HTML5 学习笔记(三)——本地存储

    目录 一.HTML4客户端存储 1.1.提交表单发送到服务器的信息 1.2.客户端本地存储概要 二.localStorage 2.1.添加 2.2.取值 2.3.修改 2.4.删除 2.5.跨页面与跨 ...

  9. HTML5 学习笔记(三)——本地存储(LocalStorage、SessionStorage、Web SQL Database)

    一.HTML4客户端存储 B/S架构的应用大量的信息存储在服务器端,客户端通过请求响应的方式从服务器获得数据,这样集中存储也会给服务器带来相应的压力,有些数据可以直接存储在客户端,传统的Web技术中会 ...

随机推荐

  1. Mongodb极简实践

    MongoDB 极简实践入门 1. 为什么用MongoDB? 传统的计算机应用大多使用关系型数据库来存储数据,比如大家可能熟悉的MySql, Sqlite等等,它的特点是数据以表格(table)的形式 ...

  2. 【Alpha】Daily Scrum Meeting——blog3

    团队成员 吴吉键 201421122007(组长) 魏修祺 201421122008 孙劲林 201421122022 1. 会议当天照片 2. 每个人的工作 姓名 已完成工作 计划完成工作 遇到的困 ...

  3. Android 高级UI设计笔记23:Android 夜间模式之 两种常用方法(降低屏幕亮度+替换theme)

    1. 夜间模式 所谓的夜间模式,就是能够根据不同的设定,呈现不同风格的界面给用户,而且晚上看着不伤眼睛.特别是一些新闻类App实现夜间模式是非常人性化的,增强用户体验. 2. 我根据网上的资料 以及自 ...

  4. Upgrade Oracle Database 12c Release 2(12.2) RAC on RHEL7.3 with RU

    Upgrade Oracle Database 12c Release 2(12.2) RAC on RHEL7.3 -- [ RU: 26610291 (GRID INFRASTRUCTURE RE ...

  5. Hive学习之路 (十二)Hive SQL练习之影评案例

    案例说明 现有如此三份数据:1.users.dat 数据格式为: 2::M::56::16::70072, 共有6040条数据对应字段为:UserID BigInt, Gender String, A ...

  6. PhotoSwipe-一个好用的图片放大缩小插件

    通过GitHub 下载PhotoSwipe https://github.com/dimsemenov/PhotoSwipe 相关的库 <link rel="stylesheet&qu ...

  7. Java反射学习二

    利用反射进行对象拷贝的例子 如下例程ReflectTester类进一步演示了Reflection API的基本使用方法. ReflectTester类有一个copy(Object object)方法, ...

  8. python 内置常用函数

    import os def set(o): return set(o) # =={o} def reverseObject(it): it.reverse() return it def sortOb ...

  9. C# lambda表达式参数的正确使用姿势

    C#的lambda表达式的好用就不多说了,中午吃饭的时候突然想到一个以前(有年头了,难道屌丝上岁数了就回忆这个么...)和同事争执的坑.. 列个demo吧.. 先是一个类,这个类的对象就是为了吃堆内存 ...

  10. MySQL原生语句个人补漏

    # insert插入insert into table_name (field1,field2...fieldn) **values** (value1,value2...valuen);所有列需添加 ...