JDBC, Como saber via SQL se um field existe na tabela

6 respostas
mrbox

Pessoal,

Uso Jdbc.
Preciso saber como testar se um field existe numa determinada tabela, e se não existir vou criar com o comando ALTER TABLE.

O caso é que não sei como fazer via SQL ou outro meio.
Tentei fazer um SELECT count(nome_campo) FROM TABELA, e caso não existisse seria gerada uma exceção.
Isso não funcionou bem, pois, quando o programa dispara a exceção, mesmo com tratando, o programa apresenta a mensagem de erro e eu não quero isso.

Alguma idéia de como fazer isso?

6 Respostas

fabiofalci

Por ai…

DatabaseMetaData dbData = connection.getMetaData();
dbData.getColumns(catalog, schemaPattern, tableNamePattern, columnNamePattern);
Focao

ser for ORACLE…

SELECT *
FROM ALL_TAB_COLUMNS
WHERE table_owner = ‘<owner of the table or view>’
AND table_name = ‘<table or view name>’

or

SELECT *
FROM USER_TAB_COLUMNS
WHERE table_name = ‘<table or view name>’

mas depende do owner…

geralmente só quem tem grand sys ou dba consegue…

senão da um desc e percorre a lista…

jimmyhc

Uma pergunta simples.

Vc esta tratando se vir nulo ?

jimmyhc

Uma pergunta simples.

Vc esta tratando se vir nulo ?

mrbox

Não, não tratei, vou tentar.

mrbox

fabiofalci:
Por ai…

DatabaseMetaData dbData = connection.getMetaData(); dbData.getColumns(catalog, schemaPattern, tableNamePattern, columnNamePattern);

Valeu carinha. É isso mesmo.
Dei uma lida na documentação e ficou mais ou menos assim:

Connection con = Conectar.getConnection();
ResultSet rs;

rs = dbData.getColumns(null, null, "MINHA_TABELA", "MEU_FIELD");  
int count = 0;
while (rs.next()) count++;
Criado 13 de novembro de 2008
Ultima resposta 13 de nov. de 2008
Respostas 6
Participantes 4