Espaço em branco atrapalhando busca com jdbc

[code]public Contato findByname(String nome) throws SQLException{
	String select = "select*from contato where nome = ?";
	Contato contatos = null;
	java.sql.PreparedStatement pstm = getConnection().prepareStatement(select);
	pstm.setString(1,nome);
	ResultSet rs = pstm.executeQuery();
		while(rs.next()){
		contatos = new Contato();
		contatos.setId(rs.getLong("id"));
		contatos.setNome(rs.getString("nome"));
		contatos.setApelido(rs.getString("apelido"));
		contatos.setTel(rs.getString("tel"));

	}
	rs.close();
	pstm.close();
	return contatos;

}

[/code]

método acima só retorna resultados sem espaço

Exemplo: coloco no campo buscar “atila augusto dos santos” ele retorna erro e mesmo se eu coloca “atila augusto dos santos” no campo buscar também retorna erro.
Só retorna um resultado se eu cadastrar “atila” no bd e buscar atila.
se eu usar o like ele reclama que está trazendo mais de 1 resultado do banco o que realmente não pode, pois não estou usando grid, só quero que ele retorne o resultado principal da busca.
Sei que existem uma class ou método que junta tudo no isso no banco de dados, alguém pode me ajudar?

Você quer que ele retorne apenas 1 linha, é isso?
Se for pra retornar apenas uma linha seria melhor utilizar um atributo UNIQUE, que não pode se repetir.

Como você fez a consulta com like ?

Porque se você colocar o % % dentro da consulta vai dar erro.
Pelo menos comigo deu.
Eu fiz assim. Usando o seu exemplo:

  String select = "select*from contato where nome = ?";
  Contato contatos = null;  
   java.sql.PreparedStatement pstm = getConnection().prepareStatement(select);  
   pstm.setString(1,"%"+nome+"%");  

Lembrando que falta o finally para fechar a conexão.
Senão se der erro a Connection não vai ser fechada corretamente.

lele_vader

Gostei vou testar…

utilize like no seu sql

  String select = "select*from contato where nome like "?";  

e coloque o % como o amigo acima citou.

    Contato contatos = null;    
    java.sql.PreparedStatement pstm = getConnection().prepareStatement(select);    
    pstm.setString(1,"%"+nome+"%");    

Apenas uma dica: procure sempre fechar a conexão dentro de um bloco finally, assim vc garante que a conexao com o DB não vai ficar presa
caso ocorra algum problama na execução do código acima.