web离线应用 Web SQL Database

web sql database 是html5废弃的一个新特性,它提供了基本的关系数据库功能,使用 `SQL` 来操纵客户端数据库的 API,这些 API 是异步的,规范中使用的方言是SQLlite

主要核心api有3个

  1. openDatabase:这个方法使用现有数据库或新建数据库来创建数据库对象
Database openDatabase(in DOMString name,   in DOMString version,
  in DOMString displayName,  in unsigned long estimatedSize,
  in optional DatabaseCallback creationCallback);

  name:数据库名。
  version:数据库版本。
  displayName:显示名称。
  estimatedSize:数据库预估长度(以字节为单位)。
  creationCallback:回调函数。(非必须)

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

 void transaction(in SQLTransactionCallback callback,
    in optional SQLTransactionErrorCallback errorCallback,
    in optional SQLVoidCallback successCallback);

  callback:事务回调函数,其中可以执行 SQL 语句。
  errorCallback:出错回调函数。(非必须)
  successCallback:执行成功回调函数。(非必须)

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

void executeSql(in DOMString sqlStatement,
    in optional ObjectArray arguments,
    in optional SQLStatementCallback callback,
    in optional SQLStatementErrorCallback errorCallback);

  sqlStatement:SQL 语句。
  arguments:SQL 语句需要的参数(?)数组。(非必须)
  callback:回调函数。(非必须)
  errorCallback:出错回调函数。(非必须)

完整栗子

<!doctype html>
<html>
<head>
    <meta charset="UTF-8">
    <title>html5 web sql database应用</title>
</head>
<body>
    <input type="button" value="创建表" onclick="createTable()"/>
    <input type="button" value="存值" onclick="save()"/>
    <input type="button" value="取值" onclick="queryData();" />
    <input type="button" value="删除" onclick="del(1);" />
    <table id="datatable" border="1">
        <thead>
            <tr>
                <td>id</td>
                <td>text</td>
            </tr>
        </thead>
        <tbody></tbody>
    </table>
    <script>

        var db = createDB();

        function createDB(){
            return openDatabase(‘textDB‘, ‘1.0‘, ‘text DB‘, 2 * 1024);
        }

        function createTable(){
            db.transaction(function(tx){
                tx.executeSql(‘CREATE TABLE IF NOT EXISTS textTable (id unique, text)‘);
            });
        }

        function insetData( id ){
            db.transaction(function (tx) {
                tx.executeSql(‘INSERT INTO textTable (id, text) VALUES (‘+id+‘, "内容‘+id+‘")‘);
            });
        }

        function save(){
            for(var i = 0 ; i < 10 ; i++){
                insetData( i );
            }
        }

        function del(id){
            db.transaction(function (tx) {
                if(id){
                    tx.executeSql(‘DELETE FROM textTable WHERE id = ? ‘, [id]);
                }else{
                    tx.executeSql(‘DELETE FROM textTable‘);
                }
            });
        }

        function queryData(){
            var tbody = document.getElementById(‘datatable‘).getElementsByTagName(‘tbody‘)[0];
            empty(tbody, ‘tr‘);
            db.transaction(function (tx) {
                tx.executeSql(‘SELECT * FROM textTable‘,[],function (context, results){
                    // console.dir(results);
                    var rows = results.rows, len = rows.length, i, tr,id,text;
                    for(i = 0 ; i < len; i++){
                        // console.dir(rows.item(i));
                        id = document.createElement(‘td‘);
                        id.innerHTML = rows.item(i).id;
                        text = document.createElement(‘td‘);
                        text.innerHTML = rows.item(i).text;

                        tr = document.createElement(‘tr‘);
                        tr.appendChild(id);
                        tr.appendChild(text);

                        tbody.appendChild(tr);
                    }
                    // 释放内存
                    tr = null, id = null, text = null, tbody = null;
                });
            });
        }

        function empty(parent, childrenName){
            var childrendom = parent.getElementsByTagName(childrenName);
            var o = childrendom[0];
            while( o != null ){
                console.log(o)
                parent.removeChild(o);
                o = childrendom[0];
            }
        }
    </script>
</body>
</html>

使用chrome的同学可以按下F12

chrome真的很强大把storage、cookies、app cache、web sql、index db等都列出来了

web离线应用 Web SQL Database

时间: 2024-08-28 12:12:47

web离线应用 Web SQL Database的相关文章

HTML5移动开发之路(20)——HTML5 Web SQL Database

本文为 兄弟连IT教育 机构官方 HTML5培训 教程,主要介绍:HTML5移动开发之路(20)--HTML5 Web SQL Database 一.Web Database介绍 WebSQL数据库API实际上不是HTML5规范的组成部分,而是单独的规范.它通过一套API来操纵客户端的数据库.Safari.Chrome.Firefox.Opera等主流浏览器都已经支持WebSQL Database WebSQL数据库有三个核心方法: 1)打开数据库openDatabase()方法: 此方法创建数

Web SQL Database 的基本用法

这两天了解了下 Web SQL Datebase,觉得有必要mark一下,虽然目前它已暂停研发,但相信在以后会有很棒的发展.在此仅mark下它的基本用法,以备后用! Web Sql Database,中文翻译作“本地数据库”,是随着HTML5规范加入的在浏览器端运行的轻量级数据库.例如购物网站的购物车,对于简单的键值对或简单对象进行存储,但是无法应对繁琐的关系数据进行处理. Web SQL Database 规范中定义的三个核心方法:   1.openDatabase:这个方法使用现有数据库或新

阿伦学习html5 之Web SQL Database

不知道什么情况, W3C不再维护web SQL Database规范,但是大多浏览器都支持了! Web SQL Database规范页面有着这样的声明 Web SQL Database 规范中定义的三个核心方法: openDatabase:这个方法使用现有数据库或新建数据库来创建数据库对象 transaction:这个方法允许我们根据情况控制事务提交或回滚 executeSql:这个方法用于执行SQL 查询 openDatabase: 我们可以使用这样简单的一条语句,创建或打开一个本地的数据库对

《Javascript权威指南》学习笔记之十八:BOM新成就(1)--客户端存储数据(Web SQL DataBase实现)

使用本地存储和会话存储可以实现简单的对象持久化,可以对简单的键值对或对象进行存储.但是,对于比较复杂的关系数据进行处理时,就要用Web SQL Database.浏览器对Web SQL Database的支持情况如图: 一.如何使用Web SQL Database <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-t

前端存储之Web Sql Database

前言 在上一篇前端存储之indexedDB中说到,我们项目组要搞一个前后端分离的项目,要求在前端实现存储,我们首先找到了indexedDB,而我们研究了一段时间的indexedDB后,发现它并不是很适合我们的项目,原因文章后面会讲到,所以我们就继续找,于是我们就找到了Web Sql Database,发现这个前端数据库是比较适合我们的项目的,于是果断转投Web Sql Database的怀抱,找存储工具跟穿鞋一个道理,不在乎多炫酷,合适才是王道,要是因为不合适导致磨脚是走不长远的,既然找到了合适

html5 初试 Web SQL Database

Web SQL Database API不包含在html5规范中,它是一个独立的规范,它引入了一套使用 SQL 操作客户端数据库的 API.所有现代浏览器都支持此API.它使用的SQL是SQLite . html5 中使用 Local and session storage 本地存储非常的方便,键值对方式虽说是使用方便,但对一些大量的数据结构处理就力有不及了,而Web SQL Database正适合这种类型的数据存储. Web SQL Database 是异步的. 连接/创建Database:

Web SQL Database实例

1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title></title> 6 </head> 7 <body onload="init()"> 8 <table> 9 <tr> 10 <td>姓名:</td&

Web Sql database 本地数据库

/* ** 介绍Web Sql Database使用 */ //web sql database 数据库入口 function WebDatabase() {}; (function() { /** *@decription 如果数据库不存在,则创建 *@param {String} 数据库名称 *@param {String} 版本号 *@param {String} 数据库描述 *@param {Number} 数据库大小 *@param {Function} 回调函数 */ var cur

HTML5教程之html 5 本地数据库(Web Sql Database)

HTML5的Web SQL Databases(html5 本地数据库)的确很诱惑人,当你发现可以用与mysql查询一样的查询语句来操作本地数据库时,你会发现这东西挺有趣的.今天,我们一起来了解HTML 5的Web SQL Database API:openDatabase.transaction.executeSql. Web SQL数据库API实际上不是HTML5规范的组成部分,而是单独的规范.它通过一套API来操纵客户端的数据库.Safari.Chrome.Firefox.Opera等主流