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