Listar Campos de uma tabela de banco de dados

Hey JavaMans… Tenho uma dúvida em relação a listagem de campos de uma tabela de banco de dados (postgresql)… Bom…tenho um sistema que prescisa listar os campos de uma tabela do banco, e para isso montei o seguinte “trecho” de código

[code]
try {

	          Statement stmt = connection.createStatement();
		           ResultSet rset = stmt.executeQuery("SELECT * from " + tabela);

		           ResultSetMetaData rsmd = rset.getMetaData();

		           // retorna o numero total de colunas
		           int numColunas = rsmd.getColumnCount();


		           // loop para recuperar os metadados de cada coluna
		           for (int i=0; i<numColunas; i++) {
		        	   String[] strColuna = new String[5];
		        	   strColuna[0] = rsmd.getColumnName (i + 1);
		        	   strColuna[1] = "" + rsmd.getColumnType (i + 1) ;
		        	   strColuna[2] =  rsmd.getColumnTypeName (i + 1);
		        	   strColuna[3] =  "" + rsmd.getColumnDisplaySize (i + 1);
		        	   strColuna[4] =  "" + rsmd.getScale(i + 1);
		        	   vtColunas.addElement(strColuna);
		        	   
		        	 
		        	   
		          }


		} catch (SQLException e) {
			System.err.println("Não foi possível recuperar informações referentes à tabela especificada" + e);
			
			e.printStackTrace();
		}[/code]

Onde consigo recuperar entre outras coisas os nomes das tabelas, tipo de campos, tamanho, etc… Mas falta uma coisa que para este sistema é muito importante que vem a ser a identificação de chaves primárias e chaves estrangeiras, sendo que esta última tenho que saber também de que tabela é proveniente… mas até agora não achei uma maneira de localizá-las… Se alguém souber… eu agradeço…

Atenciosamente…Leopoldo

Consegui localizar nas tabelas as chaves primárias com o código

[code] DatabaseMetaData dbmd = null;

				dbmd = connection.getMetaData();
				rset = dbmd.getPrimaryKeys(null, null, tabela);
				while (rset.next()){
					System.out.println ("primary key" + rset.getString(4));
				}
				[/code]

mas as chaves estrangeiras ainda não consegui… se alguém souber…agradeço

Será que ninguém tem algum exemplo ou não implementou algo parecido para que possa me ajudar?

Consegui fazer algo que liste as chaves estrangeiras

          [code]

DatabaseMetaData dbmd = null;

dbmd = connection.getMetaData();
rset = dbmd.getImportedKeys(null, null, tabela);
while (rset.next()){
//nome da coluna que é chave estrangeira
System.out.println("Foreign key" + rset.getString ("FKCOLUMN_NAME"));

   //Coluna a que se refere a chave estrangeira
    System.out.println("Tabela a que se relaciona a chave estrangeira" + rset.getString("PKTABLE_NAME"));

}

[/code]

Bom… Se alguém prescisar… está aí pra ajudar…