如下:select id, name from employee where employee='jacky', 我要找出这个语句中的列名即: id 和 name, 再找出他的表名即:employee, 还有查询条件即:employee='jacky'.当然,不仅仅是select语句,还包括create,update, delete,execute。判断条件也相对来讲复杂些。之前有考虑过用正则表达式,但是写起来非常困难。要判断的条件太多了。在这里请教下各位大虾,有不有JAVA的开源工具来解析SQL语句呢。烦请点拨一下,不胜感激~
7 个解决方案
#1
自己写。IReport里面有相应的源码.
#2
把这条sql语句当成一个字符串嘛,就用String类的一些方法来判断
1、根据关键字来查找并判断,比如select create 啊,如果是select开头,就再判断跟下一个关键字之间的字符串,比如是否有点啊,逗号啊之类的
说到这里应该明白了吧
1、根据关键字来查找并判断,比如select create 啊,如果是select开头,就再判断跟下一个关键字之间的字符串,比如是否有点啊,逗号啊之类的
说到这里应该明白了吧
#3
参考ibatis解析sqlmap的方式
#4
hibernate也有hql解析的.底层用的是atrl
你可以用其他的词法和语法分析器,这个和编译原理有关.
比较复杂.呵呵
简单的解决方案就是用正则处理了.
次之,用string
你可以用其他的词法和语法分析器,这个和编译原理有关.
比较复杂.呵呵
简单的解决方案就是用正则处理了.
次之,用string
#5
错了...呵呵
http://www.antlr.org/
ANTLR, ANother Tool for Language Recognition,
http://www.antlr.org/
ANTLR, ANother Tool for Language Recognition,
#6
javacc
#7
用STRING 是不是方法太笨了啊。。
#1
自己写。IReport里面有相应的源码.
#2
把这条sql语句当成一个字符串嘛,就用String类的一些方法来判断
1、根据关键字来查找并判断,比如select create 啊,如果是select开头,就再判断跟下一个关键字之间的字符串,比如是否有点啊,逗号啊之类的
说到这里应该明白了吧
1、根据关键字来查找并判断,比如select create 啊,如果是select开头,就再判断跟下一个关键字之间的字符串,比如是否有点啊,逗号啊之类的
说到这里应该明白了吧
#3
参考ibatis解析sqlmap的方式
#4
hibernate也有hql解析的.底层用的是atrl
你可以用其他的词法和语法分析器,这个和编译原理有关.
比较复杂.呵呵
简单的解决方案就是用正则处理了.
次之,用string
你可以用其他的词法和语法分析器,这个和编译原理有关.
比较复杂.呵呵
简单的解决方案就是用正则处理了.
次之,用string
#5
错了...呵呵
http://www.antlr.org/
ANTLR, ANother Tool for Language Recognition,
http://www.antlr.org/
ANTLR, ANother Tool for Language Recognition,
#6
javacc
#7
用STRING 是不是方法太笨了啊。。