当前位置:  开发笔记 > 前端 > 正文

HTML5与数据库API核心规范

WebSQL数据库API实际上未包含在HTML5规范之中,它是一个独立的规范,它引入了一套使用SQL操作客户端数据库的API。假设你是一名优秀的Web开发人员,那毫无疑问,你对SQL和数据库的相关概念已经很熟悉了,如果你对SQL不熟悉,那在继续阅读本文之前,最好先学">

 

  Web SQL数据库API实际上未包含在HTML 5规范之中,它是一个独立的规范,它引入了一套使用SQL操作客户端数据库的API。假设你是一名优秀的Web开发人员,那毫无疑问,你对SQL和数据库的相关概念已经很熟悉了,如果你对SQL不熟悉,那在继续阅读本文之前,最好先学习一下SQL相关的教程。

  最新版本的Chrome,Safari和Opera浏览器都支持Web SQL数据库。

  核心方法

  本文将介绍规范中定义的三个核心方法:

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

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

  3、executeSql:这个方法用于执行真实的SQL查询。

  打开数据库

  openDatabase方法打开一个已经存在的数据库,如果数据库不存在,它还可以创建数据库,创建并打开数据库的语法如下:

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

  上面的openDatabase方法使用了下面五个参数:

  1、数据库名(mydb)

  2、版本号(1.0)

  3、描述(Test DB)

  4、数据库大小(2*1024*1024)

  5、创建回调

  最后一个,即第五个参数“创建回调”,在创建数据库时会调用它,但即使没有这个参数,一样可以在运行时创建数据库。

  执行查询

  执行查询使用database.transaction()函数,它只需要一个参数,下面是一个真实的查询语句:

 

  1. var db = openDatabase('mydb', '1.0', 'Test DB', 2 * 1024 * 1024);    
  2. db.transaction(function (tx) {      
  3.    tx.executeSql('CREATE TABLE IF NOT EXISTS LOGS (id unique, log)');    
  4. });  

  上面的查询将会在“mydb”数据库中创建一个LOGS表。

  插入操作

  为了向表中插入新记录,我们在上面的查询语句中添加了一个简单的SQL查询,修改后的语句如下:

 

  1. var db = openDatabase('mydb', '1.0', 'Test DB', 2 * 1024 * 1024);    
  2. db.transaction(function (tx) {    
  3.    tx.executeSql('CREATE TABLE IF NOT EXISTS LOGS (id unique, log)');    
  4.    tx.executeSql('INSERT INTO LOGS (id, log) VALUES (1, "foobar")');    
  5.    tx.executeSql('INSERT INTO LOGS (id, log) VALUES (2, "logmsg")');    
  6. });  

  在插入新记录时,我们还可以传递动态值,如:
 

  1. var db = openDatabase('mydb', '1.0', 'Test DB', 2 * 1024 * 1024);    
  2. db.transaction(function (tx) {      
  3.   tx.executeSql('CREATE TABLE IF NOT EXISTS LOGS (id unique, log)');    
  4.   tx.executeSql('INSERT INTO LOGS     
  5.                         (id,log) VALUES (?, ?'), [e_id, e_log];    
  6. });  

  这里的e_id和e_log是外部变量,executeSql在数组参数中将每个项目映射到“?”。

  读操作

  如果要读取已经存在的记录,我们使用一个回调捕获结果,代码如下:

 

  1. var db = openDatabase('mydb', '1.0', 'Test DB', 2 * 1024 * 1024);    
  2. db.transaction(function (tx) {    
  3.    tx.executeSql('CREATE TABLE IF NOT EXISTS LOGS (id unique, log)');    
  4.    tx.executeSql('INSERT INTO LOGS (id, log) VALUES (1, "foobar")');    
  5.    tx.executeSql('INSERT INTO LOGS (id, log) VALUES (2, "logmsg")');    
  6. });    
  7. db.transaction(function (tx) {    
  8.    tx.executeSql('SELECT * FROM LOGS', [], function (tx, results) {    
  9.    var len = results.rows.length, i;    
  10.    msg = "

    Found rows: " + len + "p>";    

  11.    document.querySelector('#status').innerHTML +=  msg;    
  12.    for (i = 0; i < len; i++){    
  13.       alert(results.rows.item(i).log );    
  14.    }    
  15.  }, null);    
  16. });  

  完整的例子

  最后,我们在一个完整的HTML 5文档中展现前面讲述的内容,同时使用浏览器来解析这个HTML 5文档。

 

  1. >   
  2. <html>   
  3. <head>   
  4. <script type="text/Javascript">   
  5. var db = openDatabase('mydb', '1.0', 'Test DB', 2 * 1024 * 1024);    
  6. var msg;    
  7. db.transaction(function (tx) {    
  8.   tx.executeSql('CREATE TABLE IF NOT EXISTS LOGS (id unique, log)');    
  9.   tx.executeSql('INSERT INTO LOGS (id, log) VALUES (1, "foobar")');    
  10.   tx.executeSql('INSERT INTO LOGS (id, log) VALUES (2, "logmsg")');    
  11.   msg = '

    Log message created and row inserted.

    '
    ;    
  12.   document.querySelector('#status').innerHTML =  msg;    
  13. });    
  14.    
  15. db.transaction(function (tx) {    
  16.   tx.executeSql('SELECT * FROM LOGS', [], function (tx, results) {    
  17.    var len = results.rows.length, i;    
  18.    msg = "

    Found rows: " + len + "p>";    

  19.    document.querySelector('#status').innerHTML +=  msg;    
  20.    for (i = 0; i < len; i++){    
  21.      msg = "

    " + results.rows.item(i).log + "b>p>";    

  22.      document.querySelector('#status').innerHTML +=  msg;    
  23.    }    
  24.  }, null);    
  25. });    
  26. script>   
  27. head>   
  28. <body>   
  29. <div id="status" name="status">Status Messagediv>   
  30. body>   
  31. html>  

  下面是在最新版本的Safari或Opera浏览器中产生的输出结果。

  Log message created and row inserted.

  Found rows: 2

  foobar

  logmsg


推荐阅读
  • 软件测试工程师必备:全面解析Web应用的浏览器兼容性测试方法与工具
    随着市场上浏览器种类的不断增多,特别是在平板和移动设备上的普及,确保网站在各种浏览器中都能正常运行变得尤为重要。本文将深入探讨Web应用的浏览器兼容性测试方法与工具,帮助软件测试工程师全面掌握这一关键技能,以提高应用的用户体验和可靠性。 ... [详细]
  • 可转债数据智能抓取与分析平台优化
    本项目旨在优化可转债数据的智能抓取与分析平台。通过爬取集思录上的可转债信息(排除已发布赎回的债券),并结合安道全教授提出的三条安全线投资策略,新增了建仓线、加仓线和重仓线,以提供更精准的投资建议。 ... [详细]
  • 【Python爬虫实操】 不创作小说,专精网站内容迁移,超高效!(含源代码)
    本文详细介绍了如何利用Python爬虫技术实现高效网站内容迁移,涵盖前端、后端及Android相关知识点。通过具体实例和源代码,展示了如何精准抓取并迁移网站内容,适合对Python爬虫实战感兴趣的开发者参考。 ... [详细]
  • 在前一篇文章中,我们介绍了如何使用Requests库发送GET请求。本文将深入探讨如何通过Requests库发送POST请求,包括参数格式、请求封装等关键技巧,并通过“历史上的今天”API实例进行详细说明。 ... [详细]
  • HTML5 Web存储技术是许多开发者青睐本地应用程序的重要原因之一,因为它能够实现在客户端本地存储数据。HTML5通过引入Web Storage API,使得Web应用程序能够在浏览器中高效地存储数据,从而提升了应用的性能和用户体验。相较于传统的Cookie机制,Web Storage不仅提供了更大的存储容量,还简化了数据管理和访问的方式。本文将从基础概念、关键技术到实际应用,全面解析HTML5 Web存储技术,帮助读者深入了解其工作原理和应用场景。 ... [详细]
  • 适用于 SSR/WASM 的 ZXing Blazor 扫码组件,高效集成与优化
    本项目基于 ZXing 封装了适用于 SSR 和 WASM 的 Blazor 扫码组件,能够高效地集成到 Blazor 应用中,并支持通过手机或桌面电脑的摄像头进行扫码操作。该组件库不仅简化了开发流程,还提供了高性能的扫码体验。项目地址:[链接] ... [详细]
  • 定义Function类型:1functionsum(num1,num2){return num1+num2;}2varsumfunction(num1,num2){returnn ... [详细]
  • (1)搜狗搜索人物实战 importrequestsurlhttps:www.sogou.comweb?query李荣浩 #首先我们需要观察在搜狗输入李 ... [详细]
  • 代码:headersAccept:texthtml,applicationxhtml+xml,applicationxml;q0.9,imagewebp,image ... [详细]
  • 开发工具WebDeveloper1.1.8https:addons.mozilla.orgen-USfirefoxaddon60以工具栏的形式对网页的(X)HTML、脚本、多媒体、 ... [详细]
  • 本文深入探讨了 HTML 中的 `margin` 属性,详细解析了其基本特性和应用场景。文章不仅介绍了 `margin` 的基本概念,还重点讨论了垂直外边距合并现象,并分析了 `margin` 在块级元素与内联元素中的不同表现。通过实例和代码示例,帮助读者全面理解 `margin` 的使用技巧和常见问题。 ... [详细]
  • 优化后的标题:利用Chrome扩展程序解锁百度网盘的大文件直下与第三方下载工具兼容性
    文章探讨了如何通过使用Chrome扩展程序来增强百度网盘的功能,特别是针对大文件的直接下载和与第三方下载工具的兼容性问题。这一方法不仅提高了下载效率,还为用户提供了更多的灵活性和便利性,解决了百度网盘在使用过程中的一些限制。 ... [详细]
  • 施密特:乔布斯的影响力仍在持续发酵
    施密特在近日表示,尽管乔布斯已离世多年,但他在科技行业的深远影响仍在不断显现。2006年Macworld大会上的对话中,施密特就曾高度评价乔布斯的创新精神和领导力,认为其对未来的科技发展将持续产生重要影响。 ... [详细]
  • 深入浅出解析HTTP协议的核心功能与应用
    前言——协议是指预先设定的通信规则,确保双方能够按照既定标准进行有效沟通,从而实现准确的信息交换。例如,驯兽师通过拍手使动物坐下,这实际上是一种预设的协议。本文将详细探讨HTTP协议的核心功能及其广泛应用,解析其在现代网络通信中的重要作用。 ... [详细]
  • HTML5视频标签是否支持边加载边播放功能? ... [详细]
author-avatar
快乐小天使2602926543
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有