回答

收藏

JDBC:获取SQL查询中涉及的表名

技术问答 技术问答 67 人阅读 | 0 人回复 | 2023-09-12

没有办法知道通过JDBC执行的SQL查询中涉及的表的名称?
$ v; v* B& h0 d% t+ t例如:
' R2 J2 p; D& z1 x0 ]$ X# d6 `. jSELECT r.roleId FROM User u,UserRole r where r.userId = u.userId and u.name = "Jonh Smith"我不仅想要此查询的结果集,而且想要实际的表名(“用户”和“角色”)。我不在乎视图名称,但是如果没有办法在视图中使用基础表,这不是一个大问题,但这必须与嵌套查询一起使用。4 U0 P0 [1 Q9 K  O" N
至于为什么需要这些信息,因为我正在建立一个平台,让其他开发人员可以在这个平台上建立一个应用程序。在我的平台上,我要求其他开发人员注册他们自己的查询,并将其存储在数据库中。我不希望开发人员手动注册表格和查询本身。因此,我真的不知道该查询什么。9 h5 p5 u$ {) Y2 ?/ Q
                                                                # J( Y1 P( t8 {' h
    解决方案:                                                                5 W# s& \! F! o" {# U" b4 h* N
                                                                我还没有找到确切的方法来做你需要的事情,但我会发表它,因为它太长了,不能发表评论。我发现的最接近的事情是ResultSetMetaData。4 D  ?3 j, a  Y& N' }+ N
这是关于如何获得它的教程。
* E5 n$ V" U2 {4 p# l但教程没有显示如何获得表名。这样做的方法叫做getTableName。
, {$ T' h9 s8 F8 V/ G/** * Gets the designated column's table name.  * * @param column the first column is 1,the second is 2,... * @return table name or "" if not applicable * @exception SQLException if a database access error occurs */String getTableName(int column) throws SQLException;我认为你必须遍历所有列,把表格放在其中Set。结果应该是所有使用的表,但是…问题是,如果该列没有在选择中公开,您将找不到该表。我还没有找到解决这个问题的办法。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则