`
流浪鱼
  • 浏览: 1684855 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

HTML5本地存储——Web SQL Database

 
阅读更多

Web SQL Database

我们经常在数据库中处理大量结构化数据,html5引入Web SQL Database概念,它使用 SQL 来操纵客户端数据库的 API,这些 API 是异步的,规范中使用的方言是SQLlite,悲剧正是产生于此,Web SQL Database规范页面有着这样的声明

This document was on the W3C Recommendation track but specification work has stopped. The specification reached an impasse: all interested implementors have used the same SQL backend (Sqlite), but we need multiple independent implementations to proceed along a standardisation path.

 大概意思就是

这个文档曾经在W3C推荐规范上,但规范工作已经停止了。目前已经陷入了一个僵局:目前的所有实现都是基于同一个SQL后端(SQLite),但是我们需要更多的独立实现来完成标准化。

也就是说这是一个废弃的标准了,虽然部分浏览器已经实现。

三个核心方法

现在W3C力推的IndexedDB做比较,看看为什么要废弃这种方案。Web SQL Database 规范中定义的三个核心方法:

openDatabase:这个方法使用现有数据库或新建数据库来创建数据库对象

transaction:这个方法允许我们根据情况控制事务提交或回滚

executeSql:这个方法用于执行SQL和查询

openDatabase

我们可以使用这样简单的一条语句,创建或打开一个本地的数据库对象

var db = openDatabase('testDB', '1.0', 'Test DB', 2 * 1024 * 1024);

 openDatabase接收五个参数:

  1. 数据库名字
  2. 数据库版本号
  3. 显示名字
  4. 数据库保存数据的大小(以字节为单位 )
  5. 回调函数(非必须)

如果提供了回调函数,回调函数用以调用 changeVersion() 函数,不管给定什么样的版本号,回调函数将把数据库的版本号设置为空。如果没有提供回调函数,则以给定的版本号创建数据库。

transaction

transaction方法用以处理事务,当一条语句执行失败的时候,整个事务回滚。方法有三个参数

  1. 包含事务内容的一个方法
  2. 执行成功回调函数(可选)
  3. 执行失败回调函数(可选)
db.transaction(function (context) {
           context.executeSql('CREATE TABLE IF NOT EXISTS testTable (id unique, name)');
           context.executeSql('INSERT INTO testTable (id, name) VALUES (0, "Byron")');
           context.executeSql('INSERT INTO testTable (id, name) VALUES (1, "Casper")');
           context.executeSql('INSERT INTO testTable (id, name) VALUES (2, "Frank")');
         });

 这个例子中我们创建了一个table,并在表中插入三条数据,四条执行语句任何一条出现错误,整个事务都会回滚

executeSql

executeSql方法用以执行SQL语句,返回结果,方法有四个参数

  1. 查询字符串
  2. 用以替换查询字符串中问号的参数
  3. 执行成功回调函数(可选)
  4. 执行失败回调函数(可选)

在上面的例子中我们使用了插入语句,看个查询的例子

db.transaction(function (context) {
           context.executeSql('SELECT * FROM testTable', [], function (context, results) {
            var len = results.rows.length, i;
            console.log('Got '+len+' rows.');
               for (i = 0; i < len; i++){
              console.log('id: '+results.rows.item(i).id);
              console.log('name: '+results.rows.item(i).name);
            }
         });

完整示例

<!DOCTYPE HTML>
<html>
<head>
    <title>Web SQL Database</title>
</head>
<body>
    <script type="text/javascript">
        var db = openDatabase('testDB', '1.0', 'Test DB', 2 * 1024 * 1024);
        var msg;
        db.transaction(function (context) {
           context.executeSql('CREATE TABLE IF NOT EXISTS testTable (id unique, name)');
           context.executeSql('INSERT INTO testTable (id, name) VALUES (0, "Byron")');
           context.executeSql('INSERT INTO testTable (id, name) VALUES (1, "Casper")');
           context.executeSql('INSERT INTO testTable (id, name) VALUES (2, "Frank")');
         });

        db.transaction(function (context) {
           context.executeSql('SELECT * FROM testTable', [], function (context, results) {
            var len = results.rows.length, i;
            console.log('Got '+len+' rows.');
               for (i = 0; i < len; i++){
              console.log('id: '+results.rows.item(i).id);
              console.log('name: '+results.rows.item(i).name);
            }
         });
        });
    </script>
</body>
</html>

最后

 由于Web SQL Database规范已经被废弃,原因说的很清楚,当前的SQL规范采用SQLite的SQL方言,而作为一个标准,这是不可接受的。

 

 

 

分享到:
评论

相关推荐

    HTML5本地存储之Database Storage应用介绍

    除此之外,HTML5还引入了一种更为强大的数据存储解决方案——Database Storage,即基于SQLite的本地数据库。 SQLite是一种轻量级的关系型数据库,它不需要单独的服务器进程,并且可以直接嵌入到应用程序中。在HTML5...

    从入门到精通HTML5——PDF——网盘链接

     第12章 HTML 5与HTML 4的区别 225  视频讲解:51分钟  12.1 语法的改变 226  12.1.1 HTML 5的语法变化 226  12.1.2 HTML 5中的标记方法 226  12.1.3 HTML 5语法中的3个要点 227  12.1.4 标签实例 228  12.2...

    android与html5的交互——数据库操作,UI操作,以及html5的localStorage、定位功能

    HTML5引入了Web SQL Database和IndexedDB作为离线存储解决方案,允许在浏览器端存储大量数据。在Android应用中,通过使用Cordova(前身是PhoneGap,如DroidGapDemo所示)框架,可以无缝集成这些功能。Web SQL ...

    数据库知识了解——web数据库

    在IT领域,数据库是存储和管理数据的核心工具,而在Web开发中,Web数据库扮演着至关重要的角色。Web数据库使得Web应用程序能够动态地获取、处理、存储和展示数据,为用户提供交互式的体验。以下是对Web数据库的详细...

    JAVA实训——Web编程实例-BBS系统

    总的来说,这个JAVA实训的Web编程实例——BBS系统,将全面覆盖JAVA Web开发的基本概念和技术,包括Servlet、JSP、数据库操作、会话管理、安全性以及性能优化。通过实际操作和理解每个步骤,你将能够独立构建一个功能...

    html5离线存储.pdf

    3. 本地数据存储:HTML5提供了两种本地数据存储机制——DOM Storage(包括localStorage和sessionStorage)和Web SQL Database。DOM Storage提供键值对的存储方式,数据持久化,可用于保存用户设置、游戏进度等。Web ...

    论坛短消息——JSP+SQL2005

    【标题】"论坛短消息——JSP+SQL2005"揭示了这个项目的核心是使用Java Server Pages(JSP)技术与Microsoft SQL Server 2005数据库进行交互,来实现一个论坛的短消息系统。JSP是一种动态网页开发技术,它允许开发者...

    JSP毕业设计——JSP+SQL基于WEB的开放性实验管理系统设计与实现(源代码+论文+开题报告+中英文献+答辩PPT).zip

    后端数据库选择SQL,如MySQL或Oracle,存储用户信息、实验数据等,通过JDBC(Java Database Connectivity)接口实现数据的增删改查操作。此外,系统可能还应用了Servlet进行控制层处理,协调前后端交互。 在开发...

    利用html5本地数据库,实现自定义背景图片。

    在本案例中,“利用html5本地数据库,实现自定义背景图片”这一主题,将深入探讨如何利用HTML5的Web SQL(SQLite)数据库来存储用户选择的背景图片,以实现个性化的网页背景设置。 首先,我们需要了解HTML5的Web ...

    Oracle 实用教材———web版

    "Oracle 实用教材———web版"显然是一本专为初学者设计的教程,旨在通过Web方式进行Oracle 9i数据库的学习和实践。Oracle 9i是Oracle公司推出的第九个主要版本,它在功能上进行了许多优化和增强,尤其是在互联网...

    JSP毕业设计——JSP+SQL计算机等级考试查询系统.zip

    【JSP毕业设计——JSP+SQL计算机等级考试查询系统】是一个基于Web的项目,旨在实现一个用于查询计算机等级考试信息的系统。该项目利用JavaServer Pages(JSP)技术进行前端展示,结合SQL数据库处理后端数据存储和...

    java毕业设计——java+sql企业固定资产管理系统

    【Java毕业设计——Java+SQL企业固定资产管理系统】是一个典型的IT项目,主要涵盖了Java编程语言以及SQL数据库管理技术在企业资产管理中的应用。这个系统的设计与实现旨在帮助企业管理其固定资产,提高资产利用率,...

    html5本地存储之localstorage 、本地数据库、sessionStorage简单使用示例

    localStorage、sessionStorage和Web SQL Database(或其替代品IndexedDB)是HTML5提供给开发者在客户端存储数据的方法。localStorage适用于需要长期保存的数据,sessionStorage适用于临时数据的存储,而Web SQL ...

    JSP源码——MeyboMail Web开源简化版_meybomailweb.zip

    《JSP源码解析——MeyboMail Web开源简化版》 JSP(JavaServer Pages)是一种基于Java技术的服务器端脚本语言,用于创建动态网页。MeyboMail Web开源简化版是一款基于JSP开发的邮件系统,它提供了一种高效、安全的...

    Java Web简单例程——MyWebProject

    5. **数据库连接**:在Java Web应用中,通常使用JDBC(Java Database Connectivity)API来连接MySQL数据库。开发人员需要编写SQL语句,通过Statement或PreparedStatement对象执行,然后通过ResultSet获取查询结果。 ...

Global site tag (gtag.js) - Google Analytics