在java中预览sql结果列

在java中预览sql结果列,java,sql,Java,Sql,有什么方法可以“预览”sql select语句吗? 我要做的是获取sql语句返回的列的名称,而不实际运行该语句 在应用程序启动时,我需要知道列名,问题是一些查询可能会运行一段时间。可能会有所帮助 您仍然需要执行查询来获取元数据,但是您可以对where子句添加一个限制,这意味着它可以非常快地返回零行。例如,您可以在where子句中附加和1=0 DBMS仍然需要执行所有通常会执行的查询解析-这只是意味着执行可能会很快失败您没有提到您的DBMS,但以下内容适用于Postgres和Oracle JDBC

有什么方法可以“预览”sql select语句吗? 我要做的是获取sql语句返回的列的名称,而不实际运行该语句

在应用程序启动时,我需要知道列名,问题是一些查询可能会运行一段时间。

可能会有所帮助

您仍然需要执行查询来获取元数据,但是您可以对where子句添加一个限制,这意味着它可以非常快地返回零行。例如,您可以在where子句中附加
和1=0


DBMS仍然需要执行所有通常会执行的查询解析-这只是意味着执行可能会很快失败

您没有提到您的DBMS,但以下内容适用于Postgres和Oracle JDBC驱动程序。我没有测试其他的

// the statement is only prepared, not executed!
PreparedStatement pstmt = con.prepareStatement("select * from foo");

ResultSetMetaData metaData = pstmt.getMetaData();
for (int i=1; i <= metaData.getColumnCount(); i++)
{
  System.out.println(metaData.getColumnName(i));
}
//语句只准备好了,没有执行!
PreparedStatement pstmt=con.prepareStatement(“从foo中选择*);
ResultSetMetaData元数据=pstmt.getMetaData();

对于(int i=1;i您的SQL语句来自何处?如果您知道该语句,您应该知道列。请提供更多信息。这样您将不会得到任何帮助。SQL语句将来自配置文件,现在用户可以随时更改该文件。因此,我们的想法是尝试找到一种方法,以适应用户edsIf如果将语句作为字符串,则可以对其进行列名解析。解析查询可以是一个选项,但如果查询在解析过程中进行了计算,则可能会导致问题。