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语句中
有更好解决方案的朋友分享下自己的方案啊! 展开
看到百度上好多关于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语句中
有更好解决方案的朋友分享下自己的方案啊! 展开
5个回答
展开全部
这个需要用到编译原理的知识,理论上,既然dbms可以解析,那我们当然可以实现。
不过比较、很、太难实现而已。
并且不同数据库、不同版本的语法结构还不一样,又进一步增加了难度
不过比较、很、太难实现而已。
并且不同数据库、不同版本的语法结构还不一样,又进一步增加了难度
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
怎么能轻易说实现不了呢?我用java解析java代码都实现了,何况是简单的sql,给你个提示,用antlr试试,hibernate就是用这个工具解析hsql的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个我们做过,还是5、6年前,用antlr,在它的网站上找到了SQL语句解析的脚本作成的。
简单的话,antlr是生成解析器的工具,通过输入语法、词法生成解析树。其它人说的编译原理是对的,只不过这里有人给你化简了。
简单的话,antlr是生成解析器的工具,通过输入语法、词法生成解析树。其它人说的编译原理是对的,只不过这里有人给你化简了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2012-07-29
展开全部
软件工程是很重要的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询