有没有办法预览' sql select语句? 我想要做的是获取sql语句返回的列的名称,而不实际运行该语句?
在应用程序启动时我需要知道列名,问题是某些查询可以运行一段时间。
答案 0 :(得分:1)
ResultSetMetaData可能有所帮助
您仍然必须执行查询才能获取元数据,但您可以更改为where子句添加限制,这意味着它可以非常快速地返回零行。例如,您可以将and 1 = 0
附加到where子句。
DBMS仍然必须执行它通常会执行的所有查询解析 - 这只是意味着执行应该很快就会失败
答案 1 :(得分:0)
您没有提及您的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));
}