Pegar nome das tabelas

Bom pessoal é o seguinte…Preciso pegar o nome das tabelas do meu BD…Tentei o seguinte

[code]Connection con = DriverManager.getConnection(…);
DatabaseMetaData meta = con.getMetaData();

ResultSet tabelas = meta.getTables("", "", "", null);

while(tabelas.next()){
System.out.println(tabelas.getString("TABLE_NAME"));
}[/code]

Só que ele ñ mostra nd…Preciso pegar as tabelas p/ dai com elas montar uma JTree…

E aproveitando na JTree como q faço p/ saber qual arquivo foi selecionado?
Alguem pode me ajudar??
Grato!!!

Ola,

Pra pegar as tabelas vc tem que dizer qual é o schema da base… dá uma olhada neste exemplo:

    ResultSet rs = dbmt.getTablePrivileges ("%","XXX", null);//XXX é o schema
    s = "";
    int columnCount = rs.getMetaData ().getColumnCount ();
    for (int x = 1; x <= columnCount; x++) {
      s += rs.getMetaData ().getColumnName (x) + " , ";
    }
    p ("Columns Name = " + s);
    while (rs.next ()) {
      s = "";
      for (int x = 1; x <= columnCount; x++) {
        s += rs.getString (x) + " , ";
      }
      p (s);
    }

Considere que a conexão já foi aberta e o dbmt é o DataBaseMetaData.

em relação a JTree vc tem o javax.swing.event.TreeSelectionListener, que quando um node da JTree é selecionado ele é invodado.

OPa valeu pela resposta cara + seguinte no lugar do XXX eu coloquei “public” e dai um exemplo do q apareceu

Columns Name = TABLE_CAT , TABLE_SCHEM , TABLE_NAME , GRANTOR , GRANTEE , PRIVILEGE , IS_GRANTABLE , 
null , public , department , postgres , postgres , DELETE , YES , 
null , public , department , postgres , aluno , DELETE , NO , 
null , public , department , postgres , posjava , DELETE , NO , 

No caso department é uma das tabelas do banco…Não sei se falei errado ou se fiz errado, mas preciso que apareça as tabelas q já esta aparecendo…DAi se tiver trigger etc e as colunas das tabelas…

Valeu pela ajuda cara!!

Ola,

Bom, não seu como é o schema do postgree, mas como exemplo cito o mysql que tenho mais “intimidade”, o schema “mysql” dele tem as tabelas de administração da base… como a tabela de usuário do banco… etc., então acho que o schema “public” do postgree tb tem estas tabelas… pra vc recuperar as tabelas da sua aplicação, por exemplo, terá que indicar o seu schema…

Em relação as triggers tem metodos específicos pra vc recupera-las. dá uma olhada lá… qq coisa posta ae.

VALEU bRUNO. É QUE EU Ñ TO COM O CODIGO AQUI, MAIS VOU VER SE POSTO A NOITE…

Com ele eu to pegando o nome das tabelas do BD e pegando td as colunas de cada tabela, meio que na gambiara eu acho…hehehe
E depois com isso tenho q montar a JTree…

Só q ainda falta pegar os Trigger views etc…

Tenho um exemplo de JTree e tem uma parte q ele compara se é = um diretório, ai q esta o “problema”, eu estava pensando em colocar as tabelas em um array de string e ems eguida criar os nós e pegar as colunas de cada tabela e fazer os flhos, ñs ei se iria funcionar.Bom é isso

Bom ta ai Bruno a parte de código…Se tiver meio confuso é “normal”…ehehe

[code] dbmd = con.getMetaData();

    // Specify the type of object; in this case we want tables
    String[] types = {"TABLE"};
    
    resultSet = dbmd.getTables(null, null, "%", types);
                   
          // Get the table names

    while (resultSet.next()) {
        // Get the table name
        String tableName;

                tableName= resultSet.getString(3);

        // Get the table's catalog and schema names (if any)

       System.out.println("Tabela: "+tableName);
        
    }
        
        ResultSet rs = stmt.executeQuery("select * from employee");
        ResultSetMetaData rsmd = rs.getMetaData();
        
    for(int y=1;y<=rsmd.getColumnCount();y++){
         System.out.println("column "+y+" name = "+rsmd.getColumnName(y));
    }

[/code]

Até aquilo o q ele faz:

Tabela: department
Tabela: employee
Tabela: mensagens
Tabela: usuario
Tabela: validate
column 1 name = emp_no
column 2 name = first_name
column 3 name = last_name
column 4 name = phone_ext
column 5 name = dept_no
column 6 name = job_code
column 7 name = job_grade
column 8 name = job_country
column 9 name = salary

Ele esta listando as tabelas do banco, e como eu fiz uma query p/ verificar a tabela employee ele listo as colunas dessa tabela…

Só q como q faço p/ na parte onde ele lista as tabelas saber numero de tabelas p/ dai assim criar um array com o nome das tabelas e depois na query eu só ir colocando esse arrayincrementando o indice com o nome das tabelas???

ACho q é isso …heheh

Valeuuuu

Ola

Bom cara… ae bate aquele velho “problema” do ResultSet… não tem como saber o numero de linhas de um resultado previamente…

Mas acho que vc pode armazenar isto no array dinamico, tais como o ArrayList, Vector… sem problemas.

Mais se eu ñ sei o tamanho como vou defini-lo?
E como é o ArrayList??

Valeu!!
:wink:

não precisa definir o tamanho…
o ArrayList é uma classe tipo um array sabe… que você não precisa falar o tamanho antes!
é assim…

ArrayList lista = new ArrayList();
lista.add("valor");

se tiver dúvida em relação aos métodos sugiro a api!
http://java.sun.com/j2se/1.5.0/docs/api/

bele?

abraço!

Fala galera blz…Bom consegui resolver aqui agora só ta faltando o lançe do JTree…
Já fiz a JTree, mas ñ ta funcionando o método p/ pegar o nó selecionado…
Tentei isso

  public void ValueChanged(TreeSelectionEvent e){
        System.out.println("ta ae: "+ e.toString());
        System.out.println("teste");
  }

Mas não funciona…Como que tem q ser???
Valeu…
Abraço!