java - 只返回 ResultSet 的列名而不实际执行查询(Oracle 和 Java)

标签 java oracle

我想知道是否有一种方法可以返回结果集(Java 中的 Oracle 数据库)的列名,如果我实际执行了查询,就会生成这些列名。例如,假设我的 SQL 看起来像这样:

select * from <complex table join>;

有没有一种方法可以将这个查询发送到 oracle 并让它告诉我它将返回的结果集中的列名是什么而不实际执行查询(因为它很昂贵)?

最佳答案

我认为使用 PreparedStatement 可行:

PreparedStatement stmt = connection.prepareStatement("select ...");
ResultSetMetaData meta = stmt.getMetaData();
for (int col=0; col < meta.getColumnCount(); col++) 
{
   System.out.println("Column: " + meta.getColumnName(col + 1));
}

(编辑):我在 Oracle 11.2 和驱动程序版本 11.2.0.3 上试过了,它有效。

如果失败,您可以简单地将 where 1=0 附加到查询并执行它。至少它不会返回所有行(可能还使用 Statement.setMaxRows(),只是为了确定。

最后(但相当复杂)的选择是使用 dbms_sql 打开、准备和描述语句。详情见说明书:http://docs.oracle.com/cd/E11882_01/appdev.112/e25788/d_sql.htm

关于java - 只返回 ResultSet 的列名而不实际执行查询(Oracle 和 Java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14245411/

相关文章:

java - 在struts2中创建动态资源的友好url

java - 未找到 key 保护算法 : java. security.KeyStoreException:证书链未验证

sql - ORACLE SQL 如何使用自定义函数iside insert cte

oracle - 如何查找 Oracle PL/SQL 游标中的记录数?

java - 如何配置liquibase maven插件为oracle生成sql输出

java.lang.NoClassDefFoundError/无法找到或加载主类

java - 创建 Android 设备可以阅读的 PDF

java - Netbeans 使 JTextField 透明不起作用

sql - Oracle SQL : Return first line of string using regexp_substr

oracle - 找出PL/SQL过程的名称