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!!

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!