Como ter parâmetro no método List ? [RESOLVIDO]

Pessoal como passar parâmetro no método abaixo?

public List<Cliente> getLista() throws SQLException{

        String sql = "select cliid, clinome, clicnpjcpf from cliente";
        PreparedStatement stmt = this.connection.prepareStatement(sql);
        ResultSet rs = stmt.executeQuery();

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

        while (rs.next()){
            //criando o objeto Cliente
            Cliente cliente = new Cliente();
            cliente.setCliid(rs.getInt("cliid"));
            cliente.setClinome(rs.getString("clinome"));
            cliente.setClicnpjcpf(rs.getString("clicnpjcpf"));

            // adicionando o objeto a lista
            clientes.add(cliente);
        }
        rs.close();
        stmt.close();

        return clientes;
    }

Exemplo, se eu quiser listar os clientes com o nome “jose”, como passo o parâmetro clinome para o método?

valew

O interessante é ter um método (findByName, findByCode, e findsByWhatever) pra cada ‘tipo’ de busca. Ou ainda, você pode ter algo mais genérico, passando o nome do atributo (nome, por exemplo), e o valor (john, por exemplo):

public List<Clients> findClientsByValue(String attribute, String value) { ... }

Se você usar um framework ORM fica um pouco mais fácil (você pode usar JPQL e reflection juntos em alguns casos), ainda mais com a JPA 2.0 que saiu recentemente.

[quote=Andre Brito]O interessante é ter um método (findByName, findByCode, e findsByWhatever) pra cada ‘tipo’ de busca. Ou ainda, você pode ter algo mais genérico, passando o nome do atributo (nome, por exemplo), e o valor (john, por exemplo):

public List<Clients> findClientsByValue(String attribute, String value) { ... }

Se você usar um framework ORM fica um pouco mais fácil (você pode usar JPQL e reflection juntos em alguns casos), ainda mais com a JPA 2.0 que saiu recentemente.[/quote]

Andre sou novo em java e estou apanhando um pouco, veja se o meu código ficou correto:

public List<Cliente> findByName(String clinome) throws SQLException{

        String sql = "select * from cliente where clinome = " + clinome;
        PreparedStatement stmt = this.connection.prepareStatement(sql);
        ResultSet rs = stmt.executeQuery();

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

        while (rs.next()){
            //criando o objeto Cliente
            Cliente cliente = new Cliente();
            cliente.setCliid(rs.getInt("cliid"));
            cliente.setClinome(rs.getString("clinome"));
            cliente.setCliapelido(rs.getString("cliapelido"));
            cliente.setClirgie(rs.getString("clirgie"));
            cliente.setClicnpjcpf(rs.getString("clicnpjcpf"));

            // adicionando o objeto a lista
            clientes.add(cliente);
        }
        rs.close();
        stmt.close();

        return clientes;
    }

deve ter algum erro pois não consigo listar passando o valor do jtextfield

E ai cara…

Faça assim

String sql = "select * from cliente where clinome like ?";  
PreparedStatement stmt = this.connection.prepareStatement(sql);
stmt.setString(1,clinome+"%");
ResultSet rs = stmt.executeQuery();

Não esqueça que o valor para parametro do sql é case sensitive. Para evitar problemas costumo utilizar “select * from cliente where upper(clinome) like upper(?)”;
não sei se em todos os bancos funciona.

[quote=vdb]E ai cara…

Faça assim

String sql = "select * from cliente where clinome like ?";  
PreparedStatement stmt = this.connection.prepareStatement(sql);
stmt.setString(1,clinome+"%");
ResultSet rs = stmt.executeQuery();

Não esqueça que o valor para parametro do sql é case sensitive. Para evitar problemas costumo utilizar “select * from cliente where upper(clinome) like upper(?)”;
não sei se em todos os bancos funciona.[/quote]

Valew pela ajuda vdb. Deu certo!

obrigado!!!