Listar Tabelas de um BD qualquer em JAVA

Java

30/03/2011

Então pessoal sou novo aqui no forum, dei uma olhada nos topicos mas ainda não acjei o que eu queria (eu acho), estou com uma duvida sobre um exercicício proposto pelo professor. Desenvolva uma aplicação em Java para desktop. A aplicação deve ser baseada em JFrame para exibir os metadados de um determinado banco de dados. Desenvolva uma ou mais Interfaces Gráficas para realizar esta tarefa. A aplicação irá exibir os seguintes metadados: Listar as tabelas. Listar os campos e tipos de uma tabela. Listar as constraints. Exibir os dados. As configurações do banco devem ser armazenadas e lidas em arquivo texto. A aplicação deve permitir alterar as configurações do banco. Na parte de GUI não vou ter problema algum, queria saber se tem alguma função ou metodo do java que liste tabelas dos banco de dados. Ou terei que criar um esquema que monte tabelas coluna por coluna? Vlw pela atenção de todos.
Gabriel Vendramini

Gabriel Vendramini

Curtidas 0

Respostas

Eduardo Pereira

Eduardo Pereira

30/03/2011

Depende do banco, cada SGDB possui tabelas que retornam essas informações. Um exemplo no sqlserver:
SELECT * FROM sys.tables where name='NomedaTabela';//para uma abrangência maior, verifique os relacionamentos
GOSTEI 0
Eduardo Pereira

Eduardo Pereira

30/03/2011

Passa para gente o banco que vai usar. Se quiser opniões free, já vou indicar postgresql abcs
GOSTEI 0
Eduardo Pereira

Eduardo Pereira

30/03/2011

A princípio vc terá que fazer um select no banco para poder listar esses resultados. Dá uma olhada nesses tópico e vê se te ajuda: [url]http://netbeans.org/kb/70/java/gui-db.html[/url] Nesse artigo aqui explica como criar um resultset, que é o que vc vai precisar pra fazer o select no banco. [url]http://www.devdaily.com/java/edu/pj/jdbc/jdbc0003[/url] Qualquer dúvida é só dizer :) Obs.: Se tiver problemas com a leitura em inglês, o Google Chrome oferece um programa de tradução da página para o português :)
GOSTEI 0
Davi Costa

Davi Costa

30/03/2011

Caso o site que passei o link saia do ar, vou postar os códigos aqui pra ficar mais simples e rápido de ver. Como criar o seu ResultSet
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT Lname FROM Customers WHERE Snum = 2001");
Como Ler o resultado da sua consulta:
while (rs.next()) {
String lastName = rs.getString("Lname");
System.out.println(lastName + "\n");
}
Código todo do exemplo do site:
//  Query1.java:  Query an mSQL database using JDBC. 

import java.sql.*;
/**
 * A JDBC SELECT (JDBC query) example program.
 */
class Query1 {
 
    public static void main (String[] args) {
        try {
            String url = "jdbc:msql://200.210.220.1:1114/Demo";
            Connection conn = DriverManager.getConnection(url,"","");
            Statement stmt = conn.createStatement();
            ResultSet rs;
 
            rs = stmt.executeQuery("SELECT Lname FROM Customers WHERE Snum = 2001");
            while ( rs.next() ) {
                String lastName = rs.getString("Lname");
                System.out.println(lastName);
            }
            conn.close();
        } catch (Exception e) {
            System.err.println("Got an exception! ");
            System.err.println(e.getMessage());
        }
    }
}
GOSTEI 0
Matheus

Matheus

30/03/2011

Olá Amigos do fórum.. Possuo o mesma dúvida, porém achei uma solução mais plausível para tal coisa..
DatabaseMetaData meta = con.getMetaData();
Vide Link [url]http://boa-ventura.net/2011/02/04/listar-tabelas-do-banco-de-dados/[/url] Ressalto que estou realizando modificações no sistema para efetuar o teste. Postarei os resultados em breve
GOSTEI 0
Fernando Rocha

Fernando Rocha

30/03/2011

Opa, que legal! Obrigado por compartilhar com a galera!
GOSTEI 0
Matheus

Matheus

30/03/2011

Gostaria só de avisar que o comando citado funcionou perfeitamente.. Mais tarde postarei a minha implementação, e gostaria que postassem as implementações de vocês também, assim podemos melhorar o código.. Só ainda não consegui descobrir uma forma de mostrar as bases de dados, sendo que ainda nem tentei efetuar a conexão com o banco se especificar a base de dados.. A noite irei tentar outras coisas e postarei o resultado aqui. Já de antemão agradeço aos colegas por terem aberto o tópico que com certeza irá ajudar muita gente..
GOSTEI 0
Ricardo Staroski

Ricardo Staroski

30/03/2011

No artigo abaixo eu uso reflection e o MetaData do ResultSet pra apresentar todos os campos de uma tabela. [url]http://javafree.uol.com.br/artigo/871840/Apresentar-Resultado-de-Consulta-SQL-em-JTable.html[/url] Daria pra complementar o exemplo listando todas as tabelas. =)
GOSTEI 0
Fernando Rocha

Fernando Rocha

30/03/2011

Posta sim que vai ajudar bastante gente :)
GOSTEI 0
POSTAR