[RESOLVIDO]Não consigo retornar valor de uma pesquisa

Pessoal to com uma duvida, aparentemente simples, já pesquisei em vários fóruns mais nenhuma resposta resolveu meu problema. Duvida é o seguinte: Eu uso um método para pesquisar produto em uma classe ProdutoDAO e quero retornar esse valor em uma JFrame. Problema e que não retorna valor nenhum, volta nulo. Segue o algorítimo:
//Método de pesquisa

Produto p = new Produto();
public Produto buscasimples(String id) {
        Connection con = ConexaoBanco.getConnection();
        try {
            PreparedStatement stmt = (PreparedStatement) con.prepareStatement("SELECT * FROM produto WHERE idproduto = ?");
            stmt.setString(1, id);
            ResultSet rs = stmt.executeQuery();
            while (rs.next()) {
                p.setIdproduto(rs.getInt("idproduto"));
                p.setNome(rs.getString("nome"));
                p.setValor(rs.getDouble("valor"));
                p.setQuantidade(rs.getInt("quantidade"));
            }
        } catch (SQLException ex) {
            Logger.getLogger(ProdutoDAO.class.getName()).log(Level.SEVERE, null, ex);
        }finally{
            ConexaoBanco.closeConnection(con);
        }
        return p;
    }

}
//obs: to usando JOptionPane so pra teste e confirma se realmente ta retornando algum valor.
private void btnBuscaProdutoActionPerformed(java.awt.event.ActionEvent evt) {                                                
        ProdutoDAO dao = new ProdutoDAO();
        Produto p = dao.buscasimples(txtProduto.getText());
        JOptionPane.showMessageDialog(null, p.getNome());
    }    

Desde ja agradeço e quero pedir desculpa se fugi de algum padrão de publicação, mas essa e minha primeira publicação.

Tenta colocar assim :

PreparedStatement stmt = (PreparedStatement) con.prepareStatement("SELECT * FROM produto WHERE idproduto = id");

Vlw pela ajuda, mas fazer isso ai, eu estaria apenas passando valor diretamente, não mudaria nada.

1 curtida

Felicio_Neto

A melhor forma de verificar esse seu código é debugando mesmo… Onde pode estar o erro?

  1. Na chamada,
    Produto p = dao.buscasimples(txtProduto.getText());
    Seria bom você verificar se o txtProduto está carregado. Ele não é parâmetro do método, provavelmente é um objeto global. Então precisa verificar se ele foi carregado adequadamente e se o método getText() retorna uma String corretamente.

  2. Verificar se a query roda normalmente no banco de dados, ou seja, se a conexão está válida e se o banco está populado com os dados. Aproveita e verificar se o algoritmo entra no while, caso contrário, entende-se que não está carregando os dados.

  3. Apesar do p ser um objeto global, seria melhor você criar um objeto dentro do método, ou pelo menos instanciar antes de seguir a captura dos valores.

 while (rs.next()) {
                p = new Produto();
                p.setIdproduto(rs.getInt("idproduto"));
                p.setNome(rs.getString("nome"));
                p.setValor(rs.getDouble("valor"));
                p.setQuantidade(rs.getInt("quantidade"));
            }

Obrigado pela dica, dei estudada aqui e resolvi problema.

1 curtida