gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:10:24 26 4
gpt4 key购买 nike

我想知道是否有一种方法可以返回结果集(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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com