Access em Java

5 respostas
A

Olá, gostaria muito de saber quem poderia me ajudar a fazer o comando like funcionar em Java com access.
O Metodo é esse:

public List  pesquisar(String nome,String fone1,String fone2,String fone3,String fone4,
                                  String mail,String endereco,String obs){
        List resultado = null;
        String par = "";
        try {
            sql = "select * from contatos";
            if(!nome.equals("")){
                par = nome;
                sql+= " where nome like ?";
            }else if(!fone1.equals("")){
                par = fone1;
                sql += " where fone1 like ?";
            }else if(!fone2.equals("")){
                par = fone2;
                sql += " where fone2 like ?";
            }else if(!fone3.equals("")){
                par = fone3;
                sql += " where fone3 like ?";
            }else if(!fone4.equals("")){
                par = fone4;
                sql += " where fone4 like ?";
            }else if(!mail.equals("")){
                par = mail;
                sql += " where email like ?";
            }else if(!endereco.equals("")){
                par = endereco;
                sql += " where endereco like ?";
            }else if(!obs.equals("")){
                par = obs;
                sql += " where observacao like ?";
            }
            //sql = "select * from contatos where nome like ?";
            Connection con = Conexao.getConexaoODBC();
            PreparedStatement pstm = con.prepareStatement(sql);
            if(!par.equals("")){
                pstm.setString(1, par);
            }
            ResultSet rs = pstm.executeQuery();

            if(rs.next()){
                resultado = new ArrayList();
                    do {
                       cadastroVO pesquisa = preencherpesquisa(rs);
                       resultado.add(pesquisa);
                    } while (rs.next());
            }
            rs.close();
            pstm.close();
            con.close();

            return resultado;
        } catch (Exception ex) {
            ex.printStackTrace();
            return null;
        }

    }

Qd faço a busca com o comando where nome like ‘?%’ ele não busca nada!
No Access ele funciona qd faço where nome like ‘adr%’ mas na aplicação não!
Como faço pra q o usuario clique em qualquer parte do nome e ele busque no bd?
Desde já agradeço

5 Respostas

Y

Será que não falta você colocar os sinais de porcentagem?

Troque isso:

pstm.setString(1, par);

Por isso:

pstm.setString(1, "%" + par + "%");
Marky.Vasconcelos

Ou isso:

pstm.setString(1, par);

Por isso:

pstm.setString(0, +"%"+par+"%");

Não me lembro sobre PreparedStatements mas acho que também começa do 0.

Y

Mark_Ameba:
Ou isso:

pstm.setString(1, par);

Por isso:

pstm.setString(0, +"%"+par+"%");

Não me lembro sobre PreparedStatements mas acho que também começa do 0.

Não, cara, começa do um mesmo.

OBS.: há um “+” a mais na sua linha.

T

Arrays começam do 0, substrings começam do 0, mas PreparedStatements começam do 1.

Isso é que dá nó na cabeça…

PreparedStatement

A

Galera!
Muito Obrigado!
Consegui resolver!!
Valeu Demais

Criado 30 de outubro de 2007
Ultima resposta 31 de out. de 2007
Respostas 5
Participantes 4