Web SQL数据库API实际上未包含在HTML 5规范之中,它是一个独立的规范,它引入了一套使用SQL操作客户端数据库的API。W3C 官方在 2011 年 11 月声明已经不再维护 Web SQL Database 规范。但目前较新的chrome浏览器以及一些webkit核心浏览器支持WebSQL数据库,因此仍然必需要了解的,另外操作WebSQL还需要一定的sql基础。
规范中主要有三个核心方法:
1、openDatabase:请求打开一个现有数据库或创建新数据库对象。
2、transaction:事务方法,允许我们根据情况控制事务提交或回滚。
3、executeSql:执行真实的SQL查询。

示例代码:

 //打开数据库
var db = window.openDatabase("store", "1.0", "store", 2*1024);
//开启事务请求
db.transaction(function (t){
//成功获取的事务对象作为参数回调。
t.executeSql('CREATE TABLE IF NOT EXISTS tb_keyValue (key unique, value)');//创建表若不存在
t.executeSql('INSERT INTO tb_keyValue (key, value) VALUES(?, ?)', ['name','test_ok']);//插入数据
}, function(e){
//失败
throw "SQLError:" + e.message;
});
//开启一个只读事务
db.readTransaction(function(t){
t.executeSql('SELECT value FROM tb_keyValue WHERE key = ?', ['name'], function(t, r){
//成功回调
if(r.rows.length > 0){
alert(r.rows.item(0));//'test_ok'
}
});
}, function(e){});

openDatabase(param1,param2,param3,param4,param5)参数说明:
当指定的数据库名(param1)存在时,只有版本号(param2)与客户端一致或版本号指定为空的字符串('')时,可正常打开数据库,返回database对象,否则都将抛出异常;
当指定的数据库名(param1)不存在时,将新创建一个符合参数的数据库,并返回database对象。
第一个参数:数据库名
第二个参数:当前数据库版本,若指定版本号与浏览器客户端不一致将报错,无法打开数据库,并抛出版本不匹配错误。可以指定为空('');建议指定为空字符串(''),其他若不匹配都将报错。仅当指定的版本与客户端一致或指定为''时,可以正常打开数据库;
第三个参数:数据库描述。但实际感觉没啥用处。像是被丢弃了。
第四个参数:数据库大小
第五个参数:一个回调函数,当要打开的数据库不存在时,会将db作为参数调用,同时openDatabase也会返回db; 特别注意:回调函数执行为异步操作,需当心;比如在回调函数F中初始化创建了一张表A,但由于是异步的,在拿着openDatabase返回的db做操作时,就可能查询不到表A,因为之前的回调函数F可能还没完成。
个人感觉不好使,建议弃用。

对象结构展示:

数据操作对象Database

事务对象Transaction

r  SQLResultSet sql操作返回结果对象。一个是读取select数据时返回的对象,一个是写入insert数据时返回的对象

   

r (SQLResultSet) --> rows (SQLResultSetRowList)

参考资料:

http://www.w3.org/TR/webdatabase/   Web SQL Database API

http://kb.cnblogs.com/page/74857/

http://www.ibm.com/developerworks/cn/web/1108_zhaifeng_websqldb/

web本地存储-WebSQL的更多相关文章

  1. web本地存储

    Web本地存储 通过本地存储(Local Storage),web 应用程序能够在用户浏览器中对数据进行本地的存储. 在 HTML5 之前,应用程序数据只能存储在 cookie 中,包括每个服务器请求 ...

  2. web 本地存储 (localStorage、sessionStorage)

    web 本地存储 (localStorage.sessionStorage,cookie) localStorage(长期储存):即使关闭浏览器数据也不会删除,除非使用localStorage.cle ...

  3. [web 前端] web本地存储(localStorage、sessionStorage)

    cp from : https://blog.csdn.net/mjzhang1993/article/details/70820868 web 本地存储 (localStorage.sessionS ...

  4. web本地存储(localStorage、sessionStorage)

    web 本地存储 (localStorage.sessionStorage) 说明 对浏览器来说,使用 Web Storage 存储键值对比存储 Cookie 方式更直观,而且容量更大,它包含两种:l ...

  5. Html5 web 本地存储 (localStorage、sessionStorage)

    HTML5 提供了两种在客户端存储数据的新方法localStorage,sessionStorage sessionStorage(临时存储) :为每一个数据源维持一个存储区域,在浏览器打开期间存在, ...

  6. Html5 web本地存储

    Web Storage是HTML5引入的一个非常重要的功能,可以在客户端本地存储数据,类似HTML4的cookie,但可实现功能要比cookie强大的多,cookie大小被限制在4KB,Web Sto ...

  7. web本地存储localStorage和sessionStorage

    用谷歌浏览器调试网页程序时候发现有一个这个栏目 记录本地存储的相关信息(cookie,sessionStorage,LocalStorage等)的存储信息 1.LocalStorage localst ...

  8. web本地存储 sessionStorage 和 localStorage

    1.sessionStorage  临时存储 为每一个数据源维持一个存储区域,在浏览器打开期间存在,包括页面重新加载. 2.localStorage 长期存储 与sessionStorage一样,但在 ...

  9. web本地存储-IndexedDB

    IndexedDB, HTML5中的一种数据存储方式,索引数据库. 一个网站可能有一个或多个 IndexedDB 数据库,每个数据库必须具有惟一的名称.一个数据库可包含多个对象存储,一个对象存储相当于 ...

随机推荐

  1. 国外大神Leo-G的 DevopsWiki

    https://raw.githubusercontent.com/Leo-G/DevopsWiki/master/README.md 总结的太好了,直接把md文件贴过来好了!慢慢学习!分享给大家,觉 ...

  2. webpack图片的路径与打包

    转的http://www.cnblogs.com/ghost-xyx/p/5812902.html 今天写 react遇到打包图片,之前都是通过url在css里,没遇到问题,今天在 react里直接用 ...

  3. shell基础——创建临时文件

    (1)当前时间命名临时文件: 按照一定的格式获取当前时间:date +%y-%m-%d_%H:%M:%S #generate the file name tmpfile=`date +%y-%m-%d ...

  4. android的注意点

    1.使用Message.callback Message msg = Message.obtain(myThreadHandler,new Runnable() { @Override public  ...

  5. codec ruby和json格式输出

    zjtest7-frontend:/usr/local/logstash-2.3.4/config# cat geoip.conf input {stdin {} } filter { geoip { ...

  6. (一)boost库之日期、时间

    (一)boost库之日期.时间 一.计时器  计时器,通常在一个项目中统计一个函数的执行时间是非常实用的.   #include <boost/timer.hpp> void PrintU ...

  7. mariadb启动

    systemctl start mariadb.service #启动MariaDBsystemctl stop mariadb.service #停止MariaDBsystemctl restart ...

  8. 【Leetcode】寻找数串中连续最大整数和且最大长度的子串

    寻找数串中连续最大整数和且最大长度的子串 输入示例: 1000 -100 200 -200 100 -100 10 90 输出结果: 1100 分析: 分治法解决问题非常方便,依然分为三种情况:a[1 ...

  9. 续上文----线性表之单链表(C实现)

    本文绪上文线性表之顺序表(C实现) 本文将继续使用单链表实现线性表的另外一种存储结构.这种使用链表实现的存储结构在内存中是不连续的. C实现代码如下: #include<stdio.h> ...

  10. uva540 Team Queue by sixleaves

    这道题目.主要是对队列的灵活应用.其实就是一道模拟题目,只要你洞察出题目的本质就十分简单.题目意思大体是有多组测试数据,每组的一开始是一个数字t,代表一共有多少的团队,接着是t行输入,每一行都由一个数 ...