Método para ListarClientes() de uma Lista em ClasseDAO

10 respostas
T

Bom galera, to com um problema aqui que ta me tirando do sério. Tenho um método que se chama ListarClientes no meu fonte de um Form, sendo que esse método me mostra um erro que não se como proceder, alguem ai arrisca?

Método em código fonte no form

public void ListarClientes() throws SQLException{
        ClienteDAO dao = new ClienteDAO();
        Lcliente = dao.retrieve("%" + jTPesquisa.getText() + "%");
        MostraPesquisa(Lcliente);

O método MostraPesquisa, vou fazer depois.
O Lcliente recebe List que por ver usa o método retrieve para pegar o texto no textfield e jogar na tabela no formulário.

Minha ClasseDAO que retorna o médoto retrieve é?

public List<Cliente> retrieve(String nome) throws SQLException{
         String sql = "Select * from cliente where nome like ?";
         PreparedStatement stmt = this.conexao.prepareStatement(sql);
         stmt.setString(2,nome);
         ResultSet rs = stmt.executeQuery();

         List<Cliente> ListaCliente = new ArrayList<Cliente>();

        while(rs.next()){
            Cliente c1 = new Cliente();
            c1.setId(Long.valueOf(rs.getString("Id")));
            c1.setCpf(rs.getString("cpf"));
            c1.setNome(rs.getString("nome"));
            c1.setTelefone(rs.getString("telefone"));
            c1.setSexo(rs.getString("sexo"));
            c1.setRua(rs.getString("rua"));
            c1.setNumero(rs.getString("numero"));
            c1.setBairro(rs.getString("bairro"));
            c1.setCidade(rs.getString("cidade"));
            c1.setEstado(rs.getString("estado"));
            ListaCliente.add(c1);
        }

        rs.close();
        stmt.close();
        return ListaCliente;
    }
O erro acontece na linha         Lcliente = dao.retrieve("%" + jTPesquisa.getText() + %); que mostra pra mim:

"Incompatible types

required: java.util.list<Forms.Cliente>

found: java.util.list<ClasseLogica.Cliente>

"

Any Ideas??? :?:

10 Respostas

jweibe

Na Linha 4 do seu método retrieve vc substitui:

stmt.setString(2,nome);

por

stmt.setString(1,nome);
dobau

Esse é um dos motivos pelo qual eu prefiro parametro nomeado.

jweibe

thyagorc você fez a substituição que eu te falei?
Deu certo? funcionou?

dobau

A dúvida foi do thyagorc não minha :), mas acredito que aquele seja o problema também.

Luciano_Lopes

Não seria assim não:
Lcliente = dao.retrieve("%" + jTPesquisa.getText() + “%”);

thorian-maskier

Amigo,

Como está declarado o Lcliente?

T

Galera,

A alteracao nao teve efeito. Agora eu to sem o codigo aquii, pq to no celula r, assim que estiver no pc mostro mais detalhes. Valeu pelas respostas.

T

thorian-maskier, é isso que você quer?

public class Cliente extends javax.swing.JFrame {

    DefaultTableModel tmcliente = new DefaultTableModel(null, new String []{"Id","Nome","Cpf","Telefone"});
    List<Cliente> Lcliente;
    ListSelectionModel lsmCliente;
    

    
    /** Creates new form Cliente */
    public Cliente() {
        initComponents();

o List é minha lista de clientes que tenho na classe ClienteDAO.

public List<Cliente> retrieve(String nome) throws SQLException{
         String sql = "Select * from cliente where nome like ?";
         PreparedStatement stmt = this.conexao.prepareStatement(sql);
         stmt.setString(1,nome);
         ResultSet rs = stmt.executeQuery();

         List<Cliente> ListaCliente = new ArrayList<Cliente>();

        while(rs.next()){
            Cliente c1 = new Cliente();
            c1.setId(Long.valueOf(rs.getString("Id")));
            c1.setCpf(rs.getString("cpf"));
            c1.setNome(rs.getString("nome"));
            c1.setTelefone(rs.getString("telefone"));
            c1.setSexo(rs.getString("sexo"));
            c1.setRua(rs.getString("rua"));
            c1.setNumero(rs.getString("numero"));
            c1.setBairro(rs.getString("bairro"));
            c1.setCidade(rs.getString("cidade"));
            c1.setEstado(rs.getString("estado"));
            ListaCliente.add(c1);
        }

        rs.close();
        stmt.close();
        return ListaCliente;
    }
satangoss

verifique se todos os campos do Cliente (fora o id) estão como String e se todos estão como varchar no banco. E o indice do stm é 1 mesmo.

T

po cara, está sim, todos Varchar e os atributos todos String!!!
Valeu a dica!

Criado 4 de maio de 2011
Ultima resposta 5 de mai. de 2011
Respostas 10
Participantes 6