Ajuda para consulta por caracter

Amigos estou tentando fazer com que minha classe ClienteDAO faça consulta por caracter digitado em um caixa de texto. Esta funcionando quando faço consulta por nome mas tenho que digitar o nome inteiro, quero que quando digitado apenas uma parte da string faça a consulta ex: na vez de Carlos somente Car…minha classe DAO segue abaixo :

public Collection<ClienteVO> selectCliente(String comando,String valor){
		
		Collection<ClienteVO> retorno = null;
Connection conexao = DAOConnection.getInstance();
		
		if(conexao !=null){
			try{
			PreparedStatement pstmt = conexao.prepareStatement(
					"SELECT * from clientes where "+comando+" =?");
			pstmt.setString(1,valor);
			
			retorno = criaColecaoCliente(pstmt.executeQuery());
			
			}catch(SQLException sqle){
				sqle.printStackTrace();
			}
	}
		return retorno;
	}

Obs: comando recebe valor nome da classe view e valor recebe o que foi digitado pelo usuário na caixa dde texto.

o like não resolve seu problema?

exemplo:

where nome like 'Car%'

ou seja, assim ele vai pegar qualquer Texto do campo Nome que começar com Car (Carol, Caroline, Carlos, Carvalho…) e assim vai.

Não seria melhor você fazer o select de todos os registros e filtrar apenas na collection do que fazer uma consulta no banco toda vez que uma letra fosse digitada?

como faço isso?

Esse link vai te ajudar:
http://www.htmlstaff.org/ver.php?id=437

De qq forma, seu código ficaria: (alterações na linha 9 e 10)

1. public Collection<ClienteVO> selectCliente(String comando,String valor){ 2. 3. Collection<ClienteVO> retorno = null; 4. Connection conexao = DAOConnection.getInstance(); 5. 6. if(conexao !=null){ 7. try{ 8. PreparedStatement pstmt = conexao.prepareStatement( 9. "SELECT * from clientes where "+comando+ " like ?" ); 10. pstmt.setString(1, "%"+valor+"%"); 11. 12. retorno = criaColecaoCliente(pstmt.executeQuery()); 13. 14. }catch(SQLException sqle){ 15. sqle.printStackTrace(); 16. } 17. } 18. return retorno; 19. }

AIIII!!!funcionou isso que eu queria valeu!!!