Listar Campos de uma tabela de banco de dados

3 respostas
L
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
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();
			}

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

3 Respostas

L
Consegui localizar nas tabelas as chaves primárias com o código
DatabaseMetaData dbmd = null;
					
					dbmd = connection.getMetaData();
					rset = dbmd.getPrimaryKeys(null, null, tabela);
					while (rset.next()){
						System.out.println ("primary key" + rset.getString(4));
					}

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

L

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

L

Consegui fazer algo que liste as chaves estrangeiras

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"));
 }

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

Criado 31 de março de 2007
Ultima resposta 11 de abr. de 2007
Respostas 3
Participantes 1