网络编程
位置:首页>> 网络编程>> 网页设计>> HTML5本地存储初探(二)

HTML5本地存储初探(二)

作者:Robin 来源:Time Machine 发布时间:2010-03-07 15:47:00 

标签:HTML5,本地存储,浏览器,webkit

完成了UI,我们就需要对数据进行处理了。

在开始“数据”的本地存储之前,我们先来了解一下client-side database storage API:

the client-side database storage API allows web applications to store structured data locally using a medium many web developers are already familiar with – SQL.--webkit blog

目前只有webkit核心的浏览器支持这一特性。你甚至都不能在w3c的html5工作草案中找到 (cs-db)client-side database 的详细描述。

首先我们要尝试建立一个数据库链接:

try { if(!window.openDatabase){  //检测浏览器是否支持cs-db  alert('not supported cs-db!'); } else {  var shortName = 'noteDB';  var version = '1.0';  var displayName = 'Note book database';  var maxSize = 65536;                //创建一个数据库  var db = openDatabase(shortName,version,displayName,maxSize); }} catch(e){  //尝试捕获错误 if (e == 2){  alert('Invalid database version.'); } else {  alert("Unknown error "+e+"."); }}

如果以上代码无误,你就会在safair或者chrome的开发者工具中看到这个数据库:

在右侧区域可以直接执行一些sql查询,但是我总是得到 “发生意外错误“0”。” 这样的结果,不知道是不是RP的问题。

接下来就是创建表,以及执行一些sql语句进行增删改查。

js执行sql的基本语法大致是这样的:

db.transaction( function (transaction){  transaction.executeSql(sqlquery,[],dataHandler, errorHandler); });

其中transaction.executeSql中参数依次为:sql查询字符串,传递给sql查询的参数,数据处理句柄,错误处理句柄。其中只有第一项为必选,其余都为可选项。

第二个参数的用法大致是这样的:

transaction.executeSql("UPDATE people set age=? where name=?;",[ age, name ]);

查询字符串中的“ ?” 会被后面数组中的变量依次替换。

注意:以上我用了“大致”这个词,因为没有官方的文档 (W3C-web database),只是从一些其它文献以及自己判断得来,若有错误还请指正。

下面我们创建一张用来存储note的表:

db.transaction( function (transaction){  transaction.executeSql(                'CREATE TABLE IF NOT EXISTS notes (id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,titel TEXT, note TEXT NOT NULL, date DATE);',errorHandler); });

errorHandler是这样的:

function errorHandler(transaction, error){ alert('Error was: '+ error.message +'(Code:'+ error.code +')'); var fatal_error = true; if(fatal_error){  return true; } return false;}

error.message 是一段错误描述,error.code 是错误代码 (详情)

再看看如果从db中检索出数据并显示到页面上:

db.transaction( function (transaction){  transaction.executeSql("SELECT * from notes;",[],dataHandler, errorHandler); });function dataHandler(transaction, results){ var string = ""; for (var i = 0; i" + row['titel'] + ""; } var listConts = $('listCont'); listConts.innerHTML = string;}

可以看出,基本上和php之类后端语言操作大同小异。
更多代码可查看示例程序,不再一一罗列。

搞定了数据的本地存储之后,接下来就要看看如何将文件储存到本地。

HTML5本地存储初探(三)

0
投稿

猜你喜欢

  • 去年5月至10月间,我和雅虎口碑网的前端主管:鄢学鹍(秦歌),一起翻译了这本《JavaScript语言精粹》。原书作者是JavaScript
  • 区别IE6与FF:background:orange;*background:blue;区别IE6与IE7:background:green
  • 客户/服务器体系结构图形化的用户界面,使系统的管理更加直观和简单。丰富的编程接口,为用户进行应用程序设计提供了更大的选择余地。与Window
  • 网站上的Banner条,是网站用来作为盈利或者是发布一些重要的信息的工具。但是它又不能作为网页的主要内容,因为它的主要目的是吸引人的注意力,
  • 最近几个不错网站被封,让人感觉很不爽,现在既不方便用,也不方便学习参考。正好想到曾经“截图”的事情,其实我认为互联网产品还有个特点,更新换代
  • 最近一段时间一直比较忙,已经有好几个月没有打理博客了。现将一个最近在项目中制作的一个菜单实例整理出来,共享一下。在后台或OA系统中最常用到的
  • FSO中除了可以对驱动器、文件夹的操作以外,功能最强大的就是对文件的操作了。它可以用来记数、内容管理、搜索还可生成动态HTML页面等等。一、
  • 一、准备工作:1.建立一个 WINDOWS 用户,设置为管理员权限,并设置密码,作为发布快照文件的有效访问用户。2.在SQL SERVER下
  • 双击编辑功能如何实现:例如:标题  (鼠标双击“标题”文字 即出现可编辑的输入框形式及提交按钮) <!D
  • 前几天,Opera宣布其用户已经超过1亿——桌面版和手机版均超过5000万。Opera Mini是一个很优秀的手机浏览器,对手机用户而言,O
  • 很多朋友希望,我能把我做网站的一些流程及经验跟大家分享一下,最近刚好做一次内部培训,所以稍微整理了一下,这些只是针对网页初学者,具有一定平面
  • Debian Etch Linux上成功安装了MySQL 5.0.27 icc版本,并使用JDBC测试中文成功!中文问题的关键是全部使用UT
  • 关于建立索引的几个准则:1、合理的建立索引能够加速数据读取效率,不合理的建立索引反而会拖慢数据库的响应速度。2、索引越多,更新数据的速度越慢
  • 上文:栅格:从混乱到秩序Jacci Howard Bear 的英文原文:http://desktoppub.about.com/od/gri
  • 其实不光是上面描述的情况会锁住表,还有很多种场景会使表放生死锁,解锁其实很简单,下面用一个示例来讲解: 1 首先创建一个测试用的表: 代码如
  • Web性能优化最佳实践中最重要的一条是减少HTTP请求,它也是YSlow中比重最大的一条规则。减少HTTP请求的方案主要有合并JavaScr
  •     rs.open sql,conn:如果sql是delete,update,insert则会返
  •   组件:"Adodb.Stream"   有下列方法:   Canc
  • 第三章 XML的术语提纲:导言 一.XML文档的有关术语 二.DTD的有关术语导言初学XML最令人头疼的就是有一大堆新的术语概念要理解。由于
  • 如何利用网页弹出各种形式的窗口,我想大家大多都是知道些的,但那种多种多样的弹出式窗口是怎么搞出来的,我们今天就来学习一下:推荐:网页弹出窗口
手机版 网络编程 asp之家 www.aspxhome.com