Problemas com Metadados de um Database

Pessoal,
to com um problemão aqui, pois preciso usar o seguinte código para pegar todas as tabelas do banco de dados:

DatabaseMetaData metaData = conn.getMetaData(); rs = metaData.getTables(null,null,null,null); while( rs.next() ) { System.out.println( rs.getString("TABLE_NAME") ); }

Nos meus testes com o MySQL isso funciona bem, pois me retorna apenas as tabelas do banco para o database específico. Porém no Oracle el retornar TODAS as tabelas do banco, incluindo as tabelas do próprio Oracle. Ainda não testei com outros bancos.

No entendo eu queria que me listasse APENAS as tabelas que aquela conexão específica tem acesso.

Eu posso especificar o SCHEMA ou CATALOG que eu quero usar, porém para o Oracle como para o MySQL, cada um usa um modo diferente.

Oracle: Usa schema, que é o nome do user da conexão.
MySQL: Usa Catalog, que é o database name.

Pensei em verificar qual usa catalog e qual usa schema, usando os métodos getSchemas( ) e getCatalog(s ) e então usar o valor correto.

Alguém sugere algo diferente?

este lance de listar todas as tabelas só acontece com o Oracle mesmo, a não ser que vc especifique o “schema”

bem, sua ideia de fazer metadata.getSchemas() é boa :smiley: ,
vai retornar um ResultSer e se tiver algo no resultset quer dizer que o banco suporta schema. Entao vc passa o Schema como parametro tb.
E para catalog pode fazer a mesma coisa.

Eu to fazendo algo parecido, mas eu tenho uma tela onde o usuario entra com os parametros JDBC, username,driver, url e tambem tenho campos para ele digitar o schema e dou uma opção para usar catalogs ou nao.
Se ele nao escolher um schema por exemplo eu deixo como null

ou eu tô viajando na maionese, ou não entendi a pergunta.

c vc utilizasse o dao não teria esse problema…

DAO?

Nada a ver… não é problema de desenho da aplicação.
É problema de acesso aos metadados do Banco de Dados.

aaaaahhhhhh

acho q entendi o q vc ker, quer fazer algo um nível acima do dao…

certo ?

Já pensou em dar uma olhada em ferramentas open source como o Squirrel SQL?! Talvez seja util.

Até.

Bom,
o que eu quero, na verdade, é criar uma ferramenta que mexa no meta-nível das tabelas do banco. Na verdade estou quase acabando e só falta resolver esse problema do getTables( ), mas já pensei na solução.

[quote=danieldestro]Bom,
o que eu quero, na verdade, é criar uma ferramenta que mexa no meta-nível das tabelas do banco. Na verdade estou quase acabando e só falta resolver esse problema do getTables( ), mas já pensei na solução.[/quote]

Qual foi a solução para ficar independente de banco de dados?