Filtrar por nome

Pessoal gostaria de saber como faço para filtra por nome o meu aplicativo pelo código esta funcionando normalmente agora quando pelo nome da erro.Segue os meus dois códigos.No aguardo.

public static Cliente pesquisar (Integer codigo) {
		Cliente cliente = new Cliente();
		try{
			String sql = "SELECT * FROM CLIENTE WHERE CODIGO=?";
			Connection conn = ConnectionFcatory.getConnection();
			PreparedStatement stmt = conn.prepareStatement(sql);
			stmt.setInt(1, codigo);
			ResultSet res = stmt.executeQuery();
			if (res.next()){
				cliente.setCodigo(res.getInt("CODIGO"));
				cliente.setNome(res.getString("NOME"));
				cliente.setCpf(res.getString("CPF"));
				
			}
			stmt.close();
			res.close();
			conn.commit();
		} catch (SQLException e){
			e.printStackTrace();
		}

		return cliente;
	}

Pesquisa por nome segue abaixo

public static Cliente pesquisar (String nome,String pesquisa) {
		Cliente cliente = new Cliente();
		try{
			String sql = "select  *  from cliente where upper (nome) like '"+pesquisa.toUpperCase()+"%'";
			Connection conn = ConnectionFcatory.getConnection();
			PreparedStatement stmt = conn.prepareStatement(sql);
			stmt.setString(1, nome);
			ResultSet res = stmt.executeQuery();
			if (res.next()){
				cliente.setCodigo(res.getInt("CODIGO"));
				cliente.setNome(res.getString("NOME"));
				cliente.setCpf(res.getString("CPF"));
				
			}
			stmt.close();
			res.close();
			conn.commit();
		} catch (SQLException e){
			e.printStackTrace();
		}

		return cliente;
	}

Oi,

se está gerando erro por favor, poste o mesmo :slight_smile:
E sobre o seu pesquisar por nome, o % ao fim indica que ele pode terminar com qualquer coisa mas o nome deve iniciar com o que foi passado, é isso mesmo ? :slight_smile:

Abraços.

Coloca o erro que é mais facil…
Ou tenta assim…

[code]public static Cliente pesquisar (String nome,String pesquisa) {
Cliente cliente = new Cliente();
try{
String sql = “select * from cliente where upper(nome) like upper(”+pesquisa+"%)";
Connection conn = ConnectionFcatory.getConnection();
PreparedStatement stmt = conn.prepareStatement(sql);
stmt.setString(1, nome);
ResultSet res = stmt.executeQuery();
if (res.next()){
cliente.setCodigo(res.getInt(“CODIGO”));
cliente.setNome(res.getString(“NOME”));
cliente.setCpf(res.getString(“CPF”));

        }  
        stmt.close();  
        res.close();  
        conn.commit();  
    } catch (SQLException e){  
        e.printStackTrace();  
    }  

    return cliente;  
}  [/code]

Não entendi o pq de dois parametros mais vamos lá

creio eu que é só fazer o select:

String sql = “Select * From Cliente where upper(nome) like “+nome”+%”;

se estiver errado que alguém me corrige!
att.,

Boa diguinho, deve ser esse o problema…

[code]
public static Cliente pesquisar (String nome,String pesquisa) {
Cliente cliente = new Cliente();
try{
String sql = “select * from cliente where upper (nome) like '”+pesquisa.toUpperCase()+"%’";
Connection conn = ConnectionFcatory.getConnection();
PreparedStatement stmt = conn.prepareStatement(sql);
stmt.setString(1, nome); // <------- Aqui você ta tentando setar como parametro (1) algo que não existe… não tem nenhum ? no teu select
ResultSet res = stmt.executeQuery();
if (res.next()){
cliente.setCodigo(res.getInt(“CODIGO”));
cliente.setNome(res.getString(“NOME”));
cliente.setCpf(res.getString(“CPF”));

        }  
        stmt.close();  
        res.close();  
        conn.commit();  
    } catch (SQLException e){  
        e.printStackTrace();  
    }  

    return cliente;  
}  [/code]

O erro que da é no meu Flex no front quando pesquiso que filtro ele mostra no grid um valor 0 ,mas o problema esta no java.Creio eu.

Antes de retornar o objeto cliente dá um System.out.prinln() em todos os parametros utilizados em seu grid no Flex.
Caso esteja imprimindo corretamente, o seu problema pode estar na camada Flex mesmo, caso contrário, veja que valor está chegando ao seu método e testa o mesmo SQL em um Cliente de banco de dados.

pois então poste o erro para podermos tentar ajudar!
;D