Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Pesquisar no campo texto

Ola estou tendo uma duvida como faco para cria um metodo pesquisar por nome em um campo texto e ao acionar o botao pesquisar ele verifica se tem o nome no banco eis aqui o codigo do dao nao acertei o da tela visao :

 public Bairro BuscarBairro(String nome){
        con = FabricaConexao.pegaConexao();
        sql = "select bainome from bairro where  bainome like'%?';";
        Bairro b = null;

        try {
            ps = con.prepareStatement(sql);
            ps.setString(1, nome);

            rs = ps.executeQuery();

            if (rs.next()){
                b = new Bairro();
                b.setBainome(rs.getString("bainome"));
                }
        } catch (SQLException ex) {
            JOptionPane.showMessageDialog(null, "Erro"+ex.getMessage());
        }finally{
            try {
                con.close();
                ps.close();
                rs.close();
            } catch (SQLException ex) {
       JOptionPane.showMessageDialog(null, "Erro2"+ex.getMessage());

            }
        }
        return b;
    }
2 respostas
solução!

Oi Rodrigo, não sei se entendi bem sua dúvida. Mas mude sua query para:

sql = "select * from bairro where  bainome = ?";

e depois:

ps.setString(1, nome );

e veja se funciona. se você garantiu que seu banco não aceita nomes repetidos vai funcionar, já que ele vai trazer apenas um resultado. caso contrário, ele vai trazer apenas o último que encontrar.

Mas se pode existir bairros com o mesmo nome, você deve fazer seu método retornar uma lista de bairros: List<Bairro>já que o select pode trazer mais de um resultado. neste caso você precisa de uma lista e ir adicionando os resultados nela:

public List<Bairro> BuscarBairro(String nome){
    //código omitido

    List<Bairro> bairros = new ArrayList<>();
    if (rs.next()){
        b = new Bairro();
        b.setBainome(rs.getString("bainome"));
        bairros.add(b)
    }

    //código omitido

    return bairros;

não sei se está claro. mas veja se era essa sua dúvida senão pergunte novamente

Valeu muito obrigado..