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. java学习:AWT组件和事件处理的笔记(1)--菜单条,菜单,菜单项

    菜单放在菜单条里,菜单项放在菜单里1.MenuBar    在java.awt包中,负责创建菜单条,即MenuBar的一个实例,便是一个菜单条.    在Frame类中的setMenuBar(Menu ...

  2. mono 判断系统的网络是否可用

    /**  * 判断系统的网络是否可用  * @return  */        private bool isNetworkConnected()        {            bool ...

  3. [WPF 如何] 如何向 ComboBox 添加一个空白选项

    原文:[WPF 如何] 如何向 ComboBox 添加一个空白选项 看到这个问题,你可能会蔑视一笑 : 这也能成文章? 确实,你只需要在 ItemsSource 的0位置上插入一个空白的项就是了,如: ...

  4. jQuery.each(object, [callback])方法,用于处理json数组

    通用例遍方法,可用于例遍对象和数组. 不同于例遍 jQuery 对象的 $().each() 方法,此方法可用于例遍任何对象.回调函数拥有两个参数:第一个为对象的成员或数组的索引,第二个为对应变量或内 ...

  5. poj 1664 放苹果_整数拆分

    题意:略 用手机敲的代码真是泪流满面,终于过了 #include<iostream> using namespace std; int dp[110][110]; void solve() ...

  6. Ubuntu 查找命令

    Ubuntu 查找文件夹 使用find命令查找find / -name 文件夹名称 -type d找到结果中含有路径 查找命令 从根目录开始查找所有扩展名为.log的文本文件,并找出包含”ERROR” ...

  7. OC基础15:内存管理和自动引用计数

    "OC基础"这个分类的文章是我在自学Stephen G.Kochan的<Objective-C程序设计第6版>过程中的笔记. 1.什么是ARC? (1).ARC全名为A ...

  8. Pasha and Phone(思维)

    Pasha and Phone time limit per test 1 second memory limit per test 256 megabytes input standard inpu ...

  9. poj1220 (高精度任意进制转换)

    http://poj.org/problem?id=1220 高精度任意进制转换 代码是从discuss里找到的,据说是maigo神牛写的. 超精简!! 我自己第一写的时候,还把n进制先转成10进制, ...

  10. 提示框插件SweetAlert

    SweetAlert可以替代Javascript原生的alert和confirm等函数呈现的弹出提示框, 它将提示框进行了美化,并且允许自定义, 支持设置提示框标题.提示类型.内容展示图片.确认取消按 ...