Com o Postgres (e seu driver JDBC) você pode fazer o seguinte:
PreparedStatement pstmt = con.prepareStatement("select ... ");
ResultSetMetaData meta = pstmt.getMetaData();
for (int i=1; i <= meta.getColumnCount(); i++)
{
System.out.println("Column name: " + meta.getColumnName(i) + ", data type: " + meta.getColumnTypeName(i));
}
Observe que você não precisa adicionar um
where false
ou limit 0
à declaração. A chamada para prepareStatement()
não executa realmente a consulta.