最近从上一个项目里面出来,开始了新的项目的工作和学习。在这承上启下之际,花了点时间反思之前学到的东西,又结合新项目知识的学习,做了一个用javascript解析SQL语句的小程序。
在上一个项目的重要工作就是写SQL语句,insert,delete和update语句为主,通过配置数据库中的记录, 来展现用户可定制的页面显示。其中很大一部分工作花费在对SQL语句的检查中。 根据数据库表结构的逻辑关系,我们必须保证输入的数据是有效的,并且是有意义的。为此,我们专门有一个checklist的文档来描述。
当时就很想做一个自动化的工具,每次写完脚本以后,往工具里面一传,马上就能出来个report,说明哪哪不对了,哪个checklist没过了,一目了然。
但是总是太懒惰了,给自己找各种各样的借口,最终也没有去做。
现在的新项目用的是Dojo开发的RIA应用,第一次接触客户端层的开发,相对于传统的J2EE服务器端的开发,根本就是一头雾水。 经历了整整两周时间的混乱,终于多少对javascript的客户端开发有了一定的了解。
于是就想到了为前一个项目做点贡献,利用dojo/javascript开发一个解析SQL语句的web小工具。
技术难点:
1. 利用正则表达式匹配SQL语句。
2. 能够解析出scripts中的注释及COMMITS语句并提取出。
代码:
1. validateSQL函数中定义了匹配SQL语句的正则表达式,并对每一种SQL分别处理,并返回结果。
2. splitSqlArray通过分号来区分语句,同时去掉所有注释。 要注意的是,SQL的value中有可能包含分号, 需要把这种情况考虑到。
在上一个项目的重要工作就是写SQL语句,insert,delete和update语句为主,通过配置数据库中的记录, 来展现用户可定制的页面显示。其中很大一部分工作花费在对SQL语句的检查中。 根据数据库表结构的逻辑关系,我们必须保证输入的数据是有效的,并且是有意义的。为此,我们专门有一个checklist的文档来描述。
当时就很想做一个自动化的工具,每次写完脚本以后,往工具里面一传,马上就能出来个report,说明哪哪不对了,哪个checklist没过了,一目了然。
但是总是太懒惰了,给自己找各种各样的借口,最终也没有去做。
现在的新项目用的是Dojo开发的RIA应用,第一次接触客户端层的开发,相对于传统的J2EE服务器端的开发,根本就是一头雾水。 经历了整整两周时间的混乱,终于多少对javascript的客户端开发有了一定的了解。
于是就想到了为前一个项目做点贡献,利用dojo/javascript开发一个解析SQL语句的web小工具。
技术难点:
1. 利用正则表达式匹配SQL语句。
2. 能够解析出scripts中的注释及COMMITS语句并提取出。
代码:
1. validateSQL函数中定义了匹配SQL语句的正则表达式,并对每一种SQL分别处理,并返回结果。
2. splitSqlArray通过分号来区分语句,同时去掉所有注释。 要注意的是,SQL的value中有可能包含分号, 需要把这种情况考虑到。
validateSQL: function(content) {
var insertReg = /INSERT[\s+\n+]+INTO[\s+\n+]+\S+[\s*\n*]*\([\S*\s*\n*]+\)[\s*\n*]+VALUES[\s*\n*]*\([\S*\s*\n*]+\)/