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查询。示例代码:
1 //打开数据库 2 var db = window.openDatabase("store", "1.0", "store", 2*1024); 3 //开启事务请求 4 db.transaction(function (t){ 5 //成功获取的事务对象作为参数回调。 6 t.executeSql('CREATE TABLE IF NOT EXISTS tb_keyValue (key unique, value)');//创建表若不存在 7 t.executeSql('INSERT INTO tb_keyValue (key, value) VALUES(?, ?)', ['name','test_ok']);//插入数据 8 }, function(e){ 9 //失败10 throw "SQLError:" + e.message;11 });12 //开启一个只读事务13 db.readTransaction(function(t){14 t.executeSql('SELECT value FROM tb_keyValue WHERE key = ?', ['name'], function(t, r){15 //成功回调16 if(r.rows.length > 0){17 alert(r.rows.item(0));//'test_ok'18 }19 });20 }, 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)
参考资料:
Web SQL Database API