A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

HTML5 Web SQL 数据库

Web SQL 数据库 API 并不是 HTML5 规范的一部分,但是它是一个独立的规范,引入了一组使用 SQL 操作客户端数据库的 APIs。
如果你是一个 Web 后端程序员,应该很容易理解 SQL 的操作。
你也可以参考我们的 SQL 教程,了解更多数据库操作知识。
Web SQL 数据库可以在最新版的 Safari, Chrome 和 Opera 浏览器中工作。
核心方法

以下是规范中定义的三个核心方法:

openDatabase:这个方法使用现有的数据库或者新建的数据库创建一个数据库对象。
transaction:这个方法让我们能够控制一个事务,以及基于这种情况执行提交或者回滚。
executeSql:这个方法用于执行实际的 SQL 查询。
打开数据库

我们可以使用 openDatabase() 方法来打开已存在的数据库,如果数据库不存在,则会创建一个新的数据库,使用代码如下:

var db = openDatabase('mydb', '1.0', 'Test DB', 2 * 1024 * 1024);
openDatabase() 方法对应的五个参数说明:

数据库名称
版本号
描述文本
数据库大小
创建回调,会在创建数据库后被调用
<!DOCTYPE HTML>
<html>
<head>
        <meta charset="UTF-8">
        <title>菜鸟教程(runoob.com)</title>
        <script type="text/javascript">
                var db = openDatabase('mydb', '1.0', 'Test DB', 2 * 1024 * 1024);
                var msg;
                db.transaction(function (tx) {
                        tx.executeSql('CREATE TABLE IF NOT EXISTS LOGS (id unique, log)');
                        tx.executeSql('INSERT INTO LOGS (id, log) VALUES (1, "菜鸟教程")');
                        tx.executeSql('INSERT INTO LOGS (id, log) VALUES (2, "www.runoob.com")');
                        msg = '<p>数据表已创建,且插入了两条数据。</p>';
                        document.querySelector('#status').innerHTML =  msg;
                });
                db.transaction(function (tx) {
                        tx.executeSql('DELETE FROM LOGS  WHERE id=1');
                        msg = '<p>删除 id 为 1 的记录。</p>';
                        document.querySelector('#status').innerHTML =  msg;
                });
                db.transaction(function (tx) {
                        tx.executeSql('UPDATE LOGS SET log=\'runoob.com\' WHERE id=2');
                        msg = '<p>更新 id 为 2 的记录。</p>';
                        document.querySelector('#status').innerHTML =  msg;
                });
                db.transaction(function (tx) {
                        tx.executeSql('SELECT * FROM LOGS', [], function (tx, results) {
                                var len = results.rows.length, i;
                                msg = "<p>查询记录条数: " + len + "</p>";
                                document.querySelector('#status').innerHTML +=  msg;
                                for (i = 0; i < len; i++){
                                        msg = "<p><b>" + results.rows.item(i).log + "</b></p>";
                                        document.querySelector('#status').innerHTML +=  msg;
                                }
                        }, null);
                });
        </script>
</head>

<body>
           <div id="status" name="status">状态信息</div>
</body>       
</html>
tx.executeSql('INSERT INTO LOGS (id,log) VALUES (?, ?)', [e_id, e_log]);

动态插入数据,e_id 和 e_log 是外部变量,executeSql 会映射数组参数中的每个条目给 "?";

动态删除数据:tx.executeSql('DELETE FROM LOGS WHERE id=?', [id]);

动态更新数据:tx.executeSql('UPDATE LOGS SET log=\'www.w3cschool.cc\' WHERE id=?', [id]);

什么是应用程序缓存(Application Cache)?

web 应用可进行缓存,并可在没有因特网连接时进行访问

应用程序缓存为应用带来三个优势:

离线浏览 - 用户可在应用离线时使用它们
速度 - 已缓存资源加载得更快
减少服务器负载 - 浏览器将只从服务器下载更新过或更改过的资源。
<html manifest="demo_html.appcache">
……
<script src="demo_time.js"></script>
<p id="timePara"><button>获取日期和时间</button></p>
<p><img src="logo.png" width="336" height="69"></p>
<p>尝试打开 <a href="tryhtml5_html_manifest.htm" target="_blank">这个页面</a>, 在离线的状态下重新载入这个页面,页面也可以访问。</p>
manifest 文件的建议的文件扩展名是:".appcache"。
manifest 文件需要配置正确的 MIME-type,即 "text/cache-manifest"。
必须在 web 服务器上进行配置。
Manifest 文件

manifest 文件是简单的文本文件,它告知浏览器被缓存的内容(以及不缓存的内容)。

manifest 文件可分为三个部分:

CACHE MANIFEST - 在此标题下列出的文件将在首次下载后进行缓存
NETWORK - 在此标题下列出的文件需要与服务器的连接,且不会被缓存
FALLBACK - 在此标题下列出的文件规定当页面无法访问时的回退页面(比如 404 页面)
CACHE MANIFEST

第一行,CACHE MANIFEST,是必需的:

CACHE MANIFEST
/theme.css
/logo.gif
/main.js

上面的 manifest 文件列出了三个资源:一个 CSS 文件,一个 GIF 图像,以及一个 JavaScript 文件。当 manifest 文件加载后,浏览器会从网站的根目录下载这三个文件。然后,无论用户何时与因特网断开连接,这些资源依然是可用的。

NETWORK

下面的 NETWORK 小节规定文件 "login.php" 永远不会被缓存,且离线时是不可用的:

NETWORK:
login.php

可以使用星号来指示所有其他资源/文件都需要因特网连接:

NETWORK:
*

FALLBACK

下面的 FALLBACK 小节规定如果无法建立因特网连接,则用 "offline.html" 替代 /html5/ 目录中的所有文件:

FALLBACK:
/html/ /offline.html

注意: 第一个 URI 是资源,第二个是替补。

更新缓存

一旦应用被缓存,它就会保持缓存直到发生下列情况:

用户清空浏览器缓存
manifest 文件被修改(参阅下面的提示)
由程序来更新应用缓存
实例 - 完整的 Manifest 文件

CACHE MANIFEST
# 2012-02-21 v1.0.0
/theme.css
/logo.gif
/main.js

NETWORK:
login.php

FALLBACK:
/html/ /offline.html

以 "#" 开头的是注释行,但也可满足其他用途。应用的缓存会在其 manifest 文件更改时被更新。如果您编辑了一幅图片,或者修改了一个 JavaScript 函数,这些改变都不会被重新缓存。更新注释行中的日期和版本号是一种使浏览器重新缓存文件的办法。

关于应用程序缓存的说明

请留心缓存的内容,一旦文件被缓存,则浏览器会继续展示已缓存的版本,即使您修改了服务器上的文件。为了确保浏览器更新缓存,您需要更新 manifest 文件。

注意: 浏览器对缓存数据的容量限制可能不太一样(某些浏览器设置的限制是每个站点 5MB)。
---------------------
【转载,仅作分享,侵删】
作者:hhjian6666
原文:https://blog.csdn.net/qq_30796379/article/details/88363812
版权声明:本文为博主原创文章,转载请附上博文链接!

1 个回复

倒序浏览
奈斯,感谢分享
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马