ResultSetMetaData getTableName 返回空字符串

Posted

技术标签:

【中文标题】ResultSetMetaData getTableName 返回空字符串【英文标题】:ResultSetMetaData getTableName return empty String 【发布时间】:2014-06-30 10:58:53 【问题描述】:

我正在尝试通过以下代码从 ResultSetMetaData 中获取 TableName

        Class.forName("oracle.jdbc.driver.OracleDriver");
        String url = "jdbc:oracle:thin:@localhost:1521:orcl";
         conn = DriverManager.getConnection(url,"releaseUN", "releasepw");
        Statement stmt = conn.createStatement();
        String qry = "";
        qry = "  SELECT  *  FROM MyTable ";
        
        ResultSet rset = stmt.executeQuery(qry);
        ResultSetMetaData md = rset.getMetaData();
        int col = md.getColumnCount();
        
         for (int i = 1; i <= col; i++) 
            System.out.println("getTableName "+ md.getTableName(i));
     
         

但它返回空字符串 我使用 ojdbc14.jar 通过 jdbc 连接连接到 Oracle 数据库

实际上我想要给定查询中每个选定列的表名。

【问题讨论】:

您能从您的代码中向我们展示更多内容吗?连接查询等? 你确定String url = "jdbc:oracle:thin:@localhost:1521:orcl";是正确的!我觉得orcl应该换成XE。 是的 shekhar,orcl 是正确的,当我使用 xe 时它给我错误 java.sql.SQLException: Listener denied the connection 你确定你的连接正在建立吗?尝试抛出异常,用try catch包围它 是的,先生连接正在建立,我可以通过此代码打印列数据 while (rset.next()) System.out.println(rset.getString(1)); 【参考方案1】:

ResultSetMetaData 的文档说如果不适用,它会返回空白。

String getTableName(int column)
                    throws SQLException 
Gets the designated column's table name.
 Parameters:column - the first column is 1, 
the second is 2, ... 
Returns:table name or "" if not applicable 
Throws: SQLException - if a database access error occurs

【讨论】:

正是 Jens,它为我重新调整空白(空字符串),有些人能够从相同的方法获取 tableName,但对我来说它不起作用,还有其他解决方案 Jens 吗? @Kamal 文档没有说明“不适用”的含义。您可能需要特殊权限,或者这取决于 DBMS。 @Kamal 或看here "很遗憾,getTableName 不是由驱动程序实现的。如果你考虑一下,考虑到sql 查询可能的复杂性,实现起来并不是很简单。" 我浏览了您提供的链接,他们说没有实现该方法,无论如何感谢您的帮助 Jens

以上是关于ResultSetMetaData getTableName 返回空字符串的主要内容,如果未能解决你的问题,请参考以下文章

ResultSetMetaData getTableName 返回空

ResultSetMetaData getTableName 返回空字符串

???????????????ResultSetMetaData??????DBUtils???????????????

Oracle ResultSetMetaData getPrecision/getScale

在 mssql 的情况下 metadata.getTables 结果集为空

ResultSetMetaData中getColumnLabel和getColumnName的区别