【发布时间】:2013-05-17 18:53:10
【问题描述】:
有没有办法知道通过 JDBC 执行的 SQL 查询中涉及的表的名称?
例如:
SELECT r.roleId FROM User u, UserRole r where r.userId = u.userId and u.name = "Jonh Smith"
我不仅想要此查询的结果集,还想要实际的表名(“用户”和“角色”)。我不关心视图名称,但如果无法获取视图中使用的基础表,这不是什么大问题,但这必须与嵌套查询一起使用。
至于我为什么需要这些信息,是因为我正在创建一个平台,让其他开发人员可以在此平台上构建应用程序。在我的平台上,我让其他开发人员注册他们自己的查询并将它们存储在数据库中。我不希望开发人员不得不为实际手动注册表名以及查询本身而烦恼。所以在我执行查询时,我真的不知道该查询在做什么。
【问题讨论】:
-
无意冒犯,但你所描述的(“我让其他开发人员注册他们自己的查询并将它们存储在数据库中......所以在我执行查询时我真的不知道什么该查询正在执行。”)是等待发生的 SQL 注入。
-
@BrianRoach 好吧,我应该在这个问题上说出来,其他开发人员不会在我的服务器上运行他们的应用程序。我平台的每个“定制”都将由开发人员自己单独部署。所以我可以相信这些查询不会被利用。应用程序的普通用户将无权访问查询。