使用HTML5管理IndexedDB数据库

HTML5 的一个重要特性是本地数据持久性,它使用户能够在线和离线访问 Web 应用程序。此外,本地数据持久性使">移动应用程序更灵敏,使用的带宽更少,而且能够在低带宽场景中更高效地工作。HTML5 提供了一些本地数据持久性选项。第一个选项是 localstorage,它支持您使用一个简单的键值对来存储数据。IndexedDB(一个更加强大的选项)支持您本地存储大量对象,并使用健壮的数据访问机制检索数据。

IndexedDB API 取代了 Web Storage API,后者在 HTML5 规范中已不推荐使用。(但一些领先的浏览器仍然支持 Web Storage,其中包括苹果公司的 Safari 和 Opera Web 浏览器)与 Web Storage 相比,IndexedDB 具有多个优势,其中包括索引、事务处理和健壮的查询功能。本文将通过一系列的示例来展示如何管理 IndexedDB 数据库。

重要概念

一个网站可能有一个或多个 IndexedDB 数据库,每个数据库必须具有惟一的名称。

一个数据库可包含一个或多个对象存储。一个对象存储(由一个名称惟一标识)是一个记录集合。每个记录有一个键 和一个值。该值是一个对象,可拥有一个或多个属性。键可能基于某个键生成器,从一个键路径衍生出来,或者是显式设置。一个键生成器自动生成惟一的连续正整数。键路径定义了键值的路径。它可以是单个 JavaScript 标识符或多个由句点分隔的标识符。

规范中包含一个异步 API 和一个同步 API。同步 API 用于 Web 浏览器中。异步 API 使用请求和回调。

在以下示例中,输出附加到一个具有 ID result 的 div 标记上。要更新 result 元素,可在每个数据操作期间清除并设置 innerHTML 属性。每个示例 JavaScript 函数由 HTML 按钮的一个 onclick 事件调用。

处理错误或异常和调试

所有异步请求都有一个 onsuccess 回调和一个 onerror 回调,前者在数据库操作成功时调用,后者在一个操作未成功时调用。清单 1 是一个 onerror 回调的示例。

清单 1. 异步错误处理函数

request.onerror =
function(e) { // handle error ... console.log("Database error: " + e.target.errorCode);};

在使用 IndexedDB API 时,使用 JavaScript try/catch 块是一个不错的想法。此功能对处理可能在数据库操作之前发生的错误和异常很有用,比如在数据库未打开时尝试读取或操作数据,或者在另一个读/写事务已打开时尝试写入数据。

IndexedDB 很难调试和排除故障,因为在许多情况下,错误消息是泛泛的,缺乏信息价值。在开发应用程序时,可以使用 console.log 和 JavaScript 调试工具,比如用于 Mozilla Firefox 的 Firebug,或者 Chrome 内置的 Developer Tools。对于任何 JavaScript 密集型应用程序,这些工具的价值是无可估量的,它们尤其适用于使用 IndexedDB API 的 HTML5 应用程序。

使用数据库

一个数据库一次只能有一个版本。在首次创建数据库时,它的初始版本编号为 0。创建数据库之后,数据库(和它的对象存储)只能通过一种称为 versionchange 的特殊类型的事务来更改。要在创建数据库后更改它,必须打开具有更高版本的数据库。此操作会触发 upgradeneeded 事件。修改数据库或对象存储的代码必须位于 upgradeneeded 事件处理函数中。

清单 2 中的代码段展示了如何创建数据库:调用 open 方法并传递数据库名称。如果不存在具有指定名称的数据库,则会创建该数据库。

清单 2. 创建一个新的数据库

function createDatabase() { var openRequest = localDatabase.indexedDB.open(dbName); openRequest.onerror = function(e) { console.log("Database error: " + e.target.errorCode); }; openRequest.onsuccess = function(event) { console.log("Database created"); localDatabase.db = openRequest.result; }; openRequest.onupgradeneeded = function (evt) { ... };}

要删除现有数据库,可以调用 deleteDatabase 方法,并传递要删除的数据库名称,如 清单 3 中所示。

清单 3. 删除现有数据库

function deleteDatabase() { var deleteDbRequest = localDatabase.indexedDB.deleteDatabase(dbName); deleteDbRequest.onsuccess = function (event) { // database deleted successfully }; deleteDbRequest.onerror = function (e) { console.log("Database error: " + e.target.errorCode); };}

清单 4 中的代码段展示了如何打开与现有数据库的连接。

清单 4. 打开数据库的最新版本

function openDatabase() { var openRequest = localDatabase.indexedDB.open("dbName"); openRequest.onerror = function(e) { console.log("Database error: " + e.target.errorCode); }; openRequest.onsuccess = function(event) { localDatabase.db = openRequest.result; };}

创建、删除和打开数据库就是这么简单。现在是时候使用对象存储了。

时间: 2024-10-01 10:53:41

使用HTML5管理IndexedDB数据库的相关文章

HTML5浏览器的数据库引擎IndexDB使用例子

1,IndexedDB介绍 IndexedDB标准是HTML5官方认可的本地数据库解决方案.其目的不是取代服务器端数据库,它在一些特定场景下很有用: (1)创建自给自足的离线应用 比如页面可以在有网络连接的时候从服务器端数据库获取所需要的数据,然后将数据保存到本地数据库,以便离线时访问. (2)优化性能 一些应用使用大量的数据,如果持续地在需要时获取同样的数据,网页性能会下降.同样的,创建一个通过复杂计算生成数据的应用,如果不想浪费时间重复做同样的计算,我们可以将所有需要的数据保存到一个Inde

图形化管理MYSQL数据库的工具 SQLyog 8.6.2 发布

SQLyog 是一个易于使用的.快速而简洁的图形化管理MYSQL数据库的工具,它能够在任何地点有效地管理你的数据库. Changes: 1. SJA now supports an additional -r parameter that tells how big CHUNKS should be when copying to an empty table. 2. The -r parameter only has effect with Data Sync jobs and is igno

利用Rails中Rake管理MySQL数据库

作为一名优秀的程序员,除了编写大量的程序外,创建大量的数据库也是在所难免的.在过去的几年中,笔者曾经创建和管理了大量的MySQL数据库,在这个过程中曾使用各种工具来进行管理,以便使它的过程更简单,例如首选的图形化管理工具PHPMyAdmin,以及基于命令行的MySQL clent,它们都非常好用.但是,在笔者内心身处始终觉得,我们是一名程序员,而不是一名数据库管理员,总感觉编程和数据库管理之间有些跨越.为什么不用与编程相同的方式来管理数据库结构呢?自从开始使用Rails,终于找到了答案.通过Ra

Linux安装PhpMyAdmin管理MYSQL数据库例子

鉴于系统的稳定性以及资源的利用价值,如果玩过一段时间WEB面板或者一键包的VPS爱好者来说,还是建议以后玩玩自己编译安装网站环境.一来可以学习,二来还可以提升技能,比如人家问你用什么面板管理VPS,你说不用面板,纯手工,是不是很厉害的样子?   这不老左在折腾编译安装网站环境的时候需要处理MYSQL数据库,命令也是可以安装的,但是有些时候不如PHPMYADMIN操作的快,我们可以安装PHPMYADMIN面板进行管理MYSQL数据库.那到底应该如何做呢?   第一.安装准备工作   在安装PHPM

Linux下安装管理mysql数据库

一.卸载掉原有mysql 我们通过工具SecureCRT 5.1连接到linux服务器,要用root管理员用户,如果是普通用户登录的话,可以通过su  -  root切换为root管理员用户. 我下载的Linux系统集成了mysql数据库在里面,我们可以通过命令来查看我们的操作系统上是否已经安装了mysql数据库: rpm -qa | grep mysql 有的话,我们就通过命令卸载掉: rpm -e --nodeps mysql 删除完以后我们再用 rpm -qa | grep mysql 命

企业IT管理必备 数据库审计基础介绍

本文讲的是企业IT管理必备 数据库审计基础介绍,随着信息化的深入和普及,各行各业对信息系统的依赖性越来越强,信息系统中的数据也逐渐成为了企业的生命.数据的不准确.不真实.不一致.重复杂乱等就会影响企业的健康.于是数据审计登上了历史舞台,数据是由信息系统中的数据库进行生成.保存和管理. 一.几个概念 1.什么是审计:信息系统审计来源于传统的财务审计,因此审计是独立于被审计单位的机构和人员,对被审计单位的财政.财务收支及其有关的经济活动的真实.合法和效益进行检查.评价.公证的一种监督活动. 2.什么

【云中沙箱】如何创建并管理RDS数据库?

如何创建并管理RDS数据库?   云中沙箱实验[RDS之初体验]教您如何创建并管理RDS数据库.    云中沙箱,阿里云官方实验平台.网址:http://lab.aliyunedu.net   一.基本概念 RDS 简介      阿里云关系型数据库(Relational Database Service,简称 RDS)是一种稳定可靠.可弹性伸缩的在线数据库服务.基于阿里云分布式文件系统和高性能存储,RDS 支持 MySQL.SQL Server.PostgreSQL 和 PPAS(Postgr

js+html5操作sqlite数据库的方法_javascript技巧

本文实例讲述了js+html5操作sqlite数据库的方法.分享给大家供大家参考,具体如下: //copyright by lanxyou lanxyou[at]gmail.com var lanxDB=function(dbname){ var db=openDatabase(dbname,'1.0.0','',65536); return{ //返回数据库名 getDBName:function(){ return dbname; }, //初始化数据库,如果需要则创建表 init:func

用phpMyAdmin管理MySQL数据库

学会使用基于Web数据库的管理工具phpMyAdmin. 如果使用合适的工具,MySQL数据库的管理就会为得相当简单.应用MySQL命令行方式需要对MySQL知识非常熟悉,对SQL语言也是同样的道理.不仅如此,如果数据库的访问量很大,列表中数据的读取就会相当困难. 当前出现很多GUI MySQL客户程序,其中最为出色的是基于Web的phpMyAdmin工具.这是一种MySQL数据库前台的基于PHP的工具.PhpMyAdmin的缺点是必须安装在你的Web服务器中,所以如果没有合适的访问权限,其它用