Metodo para retornar Bancos de dados em PostgreSQL

2 respostas
C

Olá Pessoal. Acompanho o fórum á algum tempo e até então sempre achei o que precisava porém, estou tendo alguns problemas com essa aplicação que estou desenvolvendo.
Primeiramente se estiver postando em local errado peço desculpas.

O meu problema é o seguinte.
Estou desenvolvendo uma aplicação que migra os dados de um banco DBase que gera tabelas .DBF, usado em sistemas antigos desenvolvidos em Clipper para PostgreSQL, já consegui muitas coisas mais estou com dificuldades em um método pra retornar os Bancos de Dados do Postgre.

public static List<String> listaBancos(String url, int porta, String usuario, String senha) throws SQLException {

        List<String> lista = new ArrayList<String>();
        Connection con;
        con = ConexaoPostgreSQL.getConnection(url, porta, usuario, senha);
        String query = "SELECT datname FROM pg_database";
        PreparedStatement stm = con.prepareStatement(query);
        ResultSet rs = stm.executeQuery();
        
        while (rs.next()) {
            lista.add(rs.getMetaData().getCatalogName(0));
        }
        rs.close();
        con.close();
        return lista;
    }

Esse é o método para retornar os bancos de dados, a query através do pgAdmin retorna 4 Bancos e quando jogo esse List na minha tabela
aparece 4 linhas, porém, em branco. Ou se fizer:

lista.add(rs.getMetaData().toString());

retorna isso:

org.postgresql.jdbc3.Jdbc3ResultSetMetaData@15fadcf
org.postgresql.jdbc3.Jdbc3ResultSetMetaData@fbb7cb
org.postgresql.jdbc3.Jdbc3ResultSetMetaData@1462851
org.postgresql.jdbc3.Jdbc3ResultSetMetaData@bdab91

Alguem sabe o que posso fazer para retornar os bancos de dados?
Desde ja, agradeço a atenção.
Obrigado.

2 Respostas

T

Cara, tenta fazer o seguinte, grava ele sem o .toString(), ele vai gravar um objeto (como ja está), e quando for retornar o valor quebra ele em um objeto e dai então você faz ele virar um String.

tipo
Object obj = new Object();
List lista = new ArrayList();

obj.setNome("Meu Nome");
obj.setEndereco("Meu endereco");
obj.setTelefone("0000-0000");

lista.add(obj);
Object objeto = null;
List retornaLista = new ArrayList();
retornaLista = lista;
Iterator ie = retornaLista.iterator();

while (ie.hashNext()) {
   objeto = (Object) ie.next();
   System.out.println("Nome: " + objeto.getNome());
   System.out.println("Endereco : " + objeto.getEndereco());
   System.out.println("Telefone: " + objeto.getTelefone());
}

Espero que funcione! Abraço!
8)

cesar_daniel:
Olá Pessoal. Acompanho o fórum á algum tempo e até então sempre achei o que precisava porém, estou tendo alguns problemas com essa aplicação que estou desenvolvendo. Primeiramente se estiver postando em local errado peço desculpas.

O meu problema é o seguinte.
Estou desenvolvendo uma aplicação que migra os dados de um banco DBase que gera tabelas .DBF, usado em sistemas antigos desenvolvidos em Clipper para PostgreSQL, já consegui muitas coisas mais estou com dificuldades em um método pra retornar os Bancos de Dados do Postgre.

public static List<String> listaBancos(String url, int porta, String usuario, String senha) throws SQLException {

        List<String> lista = new ArrayList<String>();
        Connection con;
        con = ConexaoPostgreSQL.getConnection(url, porta, usuario, senha);
        String query = "SELECT datname FROM pg_database";
        PreparedStatement stm = con.prepareStatement(query);
        ResultSet rs = stm.executeQuery();
        
        while (rs.next()) {
            lista.add(rs.getMetaData().getCatalogName(0));
        }
        rs.close();
        con.close();
        return lista;
    }

Esse é o método para retornar os bancos de dados, a query através do pgAdmin retorna 4 Bancos e quando jogo esse List na minha tabela
aparece 4 linhas, porém, em branco. Ou se fizer:

lista.add(rs.getMetaData().toString());

retorna isso:

org.postgresql.jdbc3.Jdbc3ResultSetMetaData@15fadcf
org.postgresql.jdbc3.Jdbc3ResultSetMetaData@fbb7cb
org.postgresql.jdbc3.Jdbc3ResultSetMetaData@1462851
org.postgresql.jdbc3.Jdbc3ResultSetMetaData@bdab91

Alguem sabe o que posso fazer para retornar os bancos de dados?
Desde ja, agradeço a atenção.
Obrigado.

C

De fato busquei e gravei como objeto e na hora de jogar na tabela passei pra String.
Mudei a query, Ficou assim o código:

public static List<Object> listaBancos(String url, int porta, String usuario, String senha) throws SQLException {

        List<Object> lista = new ArrayList<Object>();
        Connection con;
        con = ConexaoPostgreSQL.getConnection(url, porta, usuario, senha);
        String query = "SELECT datname as banco FROM pg_database";
        PreparedStatement stm = con.prepareStatement(query);
        ResultSet rs = stm.executeQuery();
        while (rs.next()) {
            lista.add(rs.getString("banco"));
        }
        rs.close();
        con.close();
        return lista;
    }

Muito obrigado pela ajuda.

Criado 14 de outubro de 2012
Ultima resposta 16 de out. de 2012
Respostas 2
Participantes 2