sql查询中的列列表

Lax*_*nge 4 java sql oracle jdbc

我有一个使用各种联接的查询,我只需要该查询返回的列的列表。我在java中完成了它,通过只询问rownum = 1的一行并获取值的列名。问题是该查询是否没有返回数据。

对于前。

select * from something
Run Code Online (Sandbox Code Playgroud)

如果此查询返回任何数据,则它将返回col1, col2, col3。但如果该查询没有返回数据,则会抛出错误。

我需要的是

有什么办法可以让我跑步

desc (select * from something)
Run Code Online (Sandbox Code Playgroud)

或类似于获取查询返回的列列表。

可以是sql,也可以是JAVA。两种方法都是可以接受的。

在我的应用程序中,用户传递查询,我可以向查询添加包装器,但我无法完全修改它。

申请流程为

来自用户的查询 -> 由 java 执行并获取一行 -> 返回结果集中的列列表。

小智 6

您可以使用 结果集的ResultSetMetaData

例如 :

 ResultSet rs = stmt.executeQuery("SELECT a, b, c FROM TABLE2"); 
 ResultSetMetaData rsmd = rs.getMetaData();  
 int countOfColumns = rsmd.getColumnCount();
 for(int i = 1; i <= countOfColumns ; i++  )
 System.out.println(rsmd.getColumnName(i));
Run Code Online (Sandbox Code Playgroud)