java解析sql语句是实现不了的 30

标题写的有点绝对,目的是为了要做此努力的人看见,希望我的解释能给他带来帮助看到百度上好多关于java解析sql语句的,看到的大多和我之前努力解析的方法基本一样,无非是判断... 标题写的有点绝对,目的是为了要做此努力的人看见,希望我的解释能给他带来帮助
看到百度上好多关于java解析sql语句的,看到的大多和我之前努力解析的方法基本一样,无非是判断sql关键字的位置,我之前为了做一个数据权限访问控制,也试着去解析sql语句,但最后宣布终止,因为我发现,sql语句就是一个字符串,而这个字符串怎么写,没有规范,
如果按照sql语句的关键字去解析,是行不通的,如下sql语句:
select * from tablea a where a.name = ' select ' and a.code = ' from ' 或者....
这样你会疯掉的...
后来我只能换一种解决方案了:不过就是开发的郁闷点,因为要求每个语句 必须加上 {where} ,这个"{where}"代替了 sql语句的where,然后...再去找{where}前面的sql关键字,这样就能避开我们赋值的时候传入的是sql语句中的关键字,这样就能得到 操作的表名 别名,或者让开发的更辛苦些,呵呵,设计一个类,这个类要求,传入 操作的表名,别名,然后返回一个新的sql语句,这样就可以把我们需要的where条件加打原sql语句中

有更好解决方案的朋友分享下自己的方案啊!
展开
 我来答
渊之蓝
2012-07-29 · TA获得超过734个赞
知道小有建树答主
回答量:165
采纳率:0%
帮助的人:156万
展开全部
哈哈,楼主没文化了。这个是需要词法解析和语法解析的。总体的思路是设计一个分词器,按规则将语句进行分词。例如,关键字用1表示,字符串用2表示,当分词到 select时,标识1,分词到'select'时标识为2。然后语法解析器用来分析怎么样的词法组合才合理,需要构造语法树等。

整体来说还是很复杂的,但是是完全可以实现的。

最后推荐个很好的java实现: JavaCC
micro0369
2012-07-29 · TA获得超过1.2万个赞
知道大有可为答主
回答量:9250
采纳率:85%
帮助的人:4109万
展开全部
这个需要用到编译原理的知识,理论上,既然dbms可以解析,那我们当然可以实现。
不过比较、很、太难实现而已。
并且不同数据库、不同版本的语法结构还不一样,又进一步增加了难度
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
建清妍0
2013-01-08
知道答主
回答量:10
采纳率:0%
帮助的人:6.8万
展开全部
怎么能轻易说实现不了呢?我用java解析java代码都实现了,何况是简单的sql,给你个提示,用antlr试试,hibernate就是用这个工具解析hsql的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
义小滴1
2012-09-26
知道答主
回答量:1
采纳率:0%
帮助的人:1588
展开全部
这个我们做过,还是5、6年前,用antlr,在它的网站上找到了SQL语句解析的脚本作成的。
简单的话,antlr是生成解析器的工具,通过输入语法、词法生成解析树。其它人说的编译原理是对的,只不过这里有人给你化简了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2012-07-29
展开全部
软件工程是很重要的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式