Obter dados sobre colunas de tabela

1 resposta
anurb.coimbra

Pessoal,

dentro do meu programa preciso saber quais são os nomes das colunas de uma tabela e qual é o tipo de cada coluna.

Eu fiz algo assim:

stm = con.createStatement();
ResultSet rs = stm.executeQuery("select * from minhaTabela");
			
rs = stm.executeQuery(SQL);
			   	
ResultSetMetaData rsmd = rs.getMetaData();

int numColumns = rsmd.getColumnCount() + 1;

for(int i = 1; i < numColumns; i++){
	System.out.println(rsmd.getColumnName(i));
	System.out.println(rsmd.getColumnTypeName(i));
	System.out.println(rsmd.getColumnType(i));
	System.out.println(rsmd.getPrecision(i));
	System.out.println(rsmd.getScale(i));
}
stm.close();
rs.close();

E, com isso, eu consigo capturar todas as informações que eu preciso sobre uma tabela. O único problema é que para isso eu tenho que carregar toda a tabela em memória e isso não é muito eficiente. Tentei em vez de fazer um select * from minhaTabela usar o desc minhaTabela, mas ele não reconhece como uma instrução sql válida.

Alguém sabe qual é a melhor forma de eu obter estas informações sem ter que carregar toda a tabela em memória?

Eu faço isso para todas as tabelas de um banco e elas são enormes…

Obrigada!

1 Resposta

R

Não tenho certeza mas acho que DatabaseMetaData.getColumns() resolve o seu problema, não custa tentar:

http://java.sun.com/javase/6/docs/api/java/sql/Connection.html#getMetaData()
http://java.sun.com/javase/6/docs/api/java/sql/DatabaseMetaData.html#getColumns(java.lang.String,%20java.lang.String,%20java.lang.String,%20java.lang.String)

Criado 2 de junho de 2009
Ultima resposta 2 de jun. de 2009
Respostas 1
Participantes 2