Web 技术研究所

我一直坚信着,Web 将会成为未来应用程序的主流

浏览器的WebSQL支持

  现在的浏览器对本地储存的支持越来越丰富,在前端出现SQL也是迟早事情。不过目前貌似只有Chrome和Opera支持;FireFox默认是不支持的,需要安装个扩展(addon)才行(注意不是plugin);IE貌似目前所有的版本都不支持WebSQL(包括IE10也不支持)。
  虽然兼容性不咋样,不过咱还是稍微了解下吧~ 其实这个东西使用起来很简单,下面是个例子(莫吐槽噢!) //打开数据库
var db=openDatabase("MyDB",1,"MyDB",1000);
//执行一个事务
db.transaction(function(e){
  //当mytab不存在时删除它
  e.executeSql("drop table if exists mytab");
  //创建一个mytab表格
  e.executeSql("create table mytab(id unique,title)");
  //插入三条记录
  e.executeSql("insert into mytab(id,title) values(1,'asdf')");
  e.executeSql("insert into mytab(id,title) values(2,'qwer')");
  e.executeSql("insert into mytab(id,title) values(3,'zxcv')");
  //查询
  e.executeSql("select * from mytab",null,function(e,s){
    //查询成功回到函数
    //遍历记录集,并输出到控制台
    var i=0,s=s.rows,l=s.length;
    while(i<l)console.log(s.item(i++));
  });
});

  除了我们输出到控制台的数据,还可以在Chrome的资源面板中找到它。
  很简单吧,如果你使用过MySQL之类的常规数据库,使用这东西简直易如反掌。openDatabase是打开一个数据库,有4个参数。第一个是数据库名,传个字符串就好;第二个是数据库版本,目前只有1版,所以就用传入1;第三个是数据库描述(其实是数据库完整名,我觉得作为描述更恰当),传个字符串就好,不需要的话就直接null;最后一个参数据说是数据库的大小,单位是字节;但是我试了任意数字或null作为第四个参数,数据库也依然可以使用,或许是目前的版本尚未启用这个最后两个参数吧。不过,按要求传入还是比较好的。
  打开了数据库后,我们要做的就是在数据库上工作。要让数据库执行命令,首先要创建一个事务(这貌似是线程分配机制必须的)。之间在数据库对象上调用transaction就可以了。它的参数是一个回调函数,这个回调函数作为事务的主过程。回调函数的参数就是事务对象,所以我们在这个函数中直接取出它的参数出来使用(执行SQL语句)。
  在事务对象上可以调用executeSql来执行SQL语句,至于SQL语句的具体语法什么的我就不说啥了,具体可以参考SQLite。executeSql有很多个参数。第一个参数是查询语句,传个字符串过去就行。第二个参数如果是数组,那么就作为查询语句用问号代替的参数。比如,上面代码的插入数据语句我们可以这样写 e.executeSql("insert into mytab(id,title) values(?,?)",[1,"asdf"]);   这玩意儿很方便,因为不需要考虑数据类型,使用起来比常规的SQL数据库方便的多。executeSql的最后两个参数是查询成功和查询失败的回调函数,查询成功的回调函数中,第一个参数是事务对象本身,第二个参数才是查询成功后返回的记录集。这个记录集也没啥好说的,从上面例子就能看出它的结构。实在不行就自己输出到控制台看看属性和方法。
  到这里,咱就了解WebSQL的皮毛了。因为麻烦的很,Opera上的我就不截图了。由于兼容性问题,目前这个技术还没办法在大型项目中使用。先了解这些吧~ 等以后普及了再深入研究!
  参考:
    MDN Use SQLite
网名:
54.144.24.*
电子邮箱:
仅用于接收通知
提交 悄悄的告诉你,Ctrl+Enter 可以提交哦
神奇海螺
[查看全部主题]
各类Web技术问题讨论区
发起新主题
本模块采用即时聊天邮件通知的模式
让钛合金F5成为历史吧!
次碳酸钴的技术博客,文章原创,转载请保留原文链接 ^_^