[Resolvido] Não consigo fazer meu método "pesquisar" dar certo

4 respostas
F

Olá, pessoal do fórum…

Estou tentando fazer uma pesquisa no meu banco de dados e estou tendo problemas, espero que vocês possam me ajudar…

O problema é o seguinte:
No meu banco de dados, tenho uma tabela chamada “coluna”, que possui apenas duas colunas, “col_id”, do tipo integer, e “col_nome”, do tipo varchar.
Na minha aplicação existe uma janela para adicionar as colunas, pedindo apenas o nome. Pra isso, criei um método adiciona() na classe “Coluna” e funciona perfeitamente!

O problema é na hora de pesquisar essas colunas…

Tenho as seguintes classes:

BDPadrao: possui um método conectar(), desconectar() e pesquisar(), que é da seguinte forma:

static protected ResultSet pesquisar(String sql) throws SQLException, ClassNotFoundException {

        Connection conn = conectar();

       Statement stm = conn.createStatement();
     //   PreparedStatement pstm = conn.prepareStatement(sql);
        ResultSet rs = stm.executeQuery(sql);
        
        desconectar(conn);
        
        return rs;
    }

BDColuna, que por enquanto possui apenas o método adicionar() que funciona perfeitamente, e o método pesquisar() que não funciona…

public static ArrayList<Coluna> pesquisar(Coluna col1, String nome) throws SQLException, ClassNotFoundException {

        String sql = "select * from coluna";
 ArrayList<Coluna> listaColunas = new ArrayList<>();

        ResultSet rs = BDPadrao.pesquisar(sql); //resultSer = matriz com os dados do BD

        while (rs.next()) {
            Coluna co1 = new Coluna();
            col1.setNome(rs.getString("col_nome"));
            listaColunas.add(co1);
        }

        return listaColunas;

    }

A classe Coluna, que possui gets/sets, método adicionar() que funciona, e o método pesquisar a seguir:

public ArrayList<Coluna> pesquisar(String nome) throws SQLException, ClassNotFoundException {
        
           return BDColuna.pesquisar(this, nome);
            
        
    }

E a classe para preencher uma tabela com as colunas encontradas, que é a classe “Tabela”, que possui um método para preencher os dados ao ser inicializada:

public void preencheDadosTabela()  {
        
        DefaultTableModel model = (DefaultTableModel) tabela.getModel();
        Coluna col1 = new Coluna();
        
        try {
        listaColunas = col1.pesquisar("");
        
        
        
        for (int i=0; i<listaColunas.size(); i++) {
            col1 = listaColunas.get(i);
            System.out.println(col1.getNome());
              model.addColumn(col1.getNome());
        }
        
        } catch (SQLException | ClassNotFoundException exc) {
            System.out.println("Erro ao pesquisar!" + exc.getMessage());
        }
        
        
        
    }

Bom, eu ja revisei esse código várias vezes, não sei aonde está o erro dele, mas quando eu compilo, vejo que não tem nenhum nome salvo no objeto “col1”, ou seja, talvez seja um erro no resultSet, mas não sei pra onde correr.
Já tentei trocar o Statement pelo PreparedStatement, já tentei chamar o método getResultSet(), mas sempre dá algum erro…

Se alguém souber, por favor, me responda!

Obrigado!

4 Respostas

AlexandreTLazaro

Olá…

Bom, dei uma olhada meio por cima e já vi que tem um erro aqui:

while (rs.next()) {  
  Coluna co1 = new Coluna();  
  col1.setNome(rs.getString("col_nome"));  
  listaColunas.add(co1);  
}

você está fazendo isso:

col1.setNome(rs.getString("col_nome"));

e adicionando isso:

listaColunas.add(co1);

viu??? nome do objeto col1 está diferente!

arruma aew e veja se funciona.

F

Não precisa mais, já está resolvido, obrigado!

O erro era no

while (rs.next()) {

Coluna co1 = new Coluna();

col1.setNome(rs.getString(col_nome));

listaColunas.add(co1);

}

Ao inves de “col1” eu tinha que colocar “co1”

AlexandreTLazaro

foi o q eu respondi rapaz HSAUasHUsAhuaShuasHUaSHUaSHUasHUAS…põe [RESOLVIDO] no tópico aew

F

po mano, mal ae :slight_smile: nem vi sua resposta. nem atualizei, mas vlw mesmo assim!

Criado 4 de março de 2013
Ultima resposta 4 de mar. de 2013
Respostas 4
Participantes 2