O que está errado?

9 respostas
rocha

Olá galera o q está errado neste trecho de código:

try{ 
            
              if (cpf != ("")){
                    sql = "cpfFuncionario = '" + cpf + "'";
               }
 
            if (nome != ("")){
                if (sql != (""))
                    sql = sql + " AND nomeFuncionario LIKE '%" + nome + "%'";
                else{
                    sql = " nomeFuncionario LIKE '%" + nome + "%'";
                }
            }

            if (filial != ("")){
                if (sql != (""))
                    sql = sql + " AND filialFuncionario LIKE '%" + filial + "%'";
                else{
                    sql = " filialFuncionario LIKE '%" + filial + "%'";
                }
            }
            
            
                if (sql != (""))
                    sql = "SELECT * FROM tbfuncionario WHERE '" + sql + "'";

Valeu.....

Rcoha :lol:

9 Respostas

_fs

Cara, não é correto comparar String com o operador ==/!=

Use o método equals()

if (!nome.equals("")){
                if (!sql.equals(""))
                    sql += " AND";

                    sql += " nomeFuncionario LIKE '%" + nome + "%'";
                }
            }

Para enteder o porquê:
http://www.guj.com.br/java.aclassejava.lang.string.artigo.103.1.guj

LÊ! LÊ! LÊ!

rocha

Valeu Lipe....

Fiz assim e tb não funcionou:
try{ 
            
              if (!cpf.equals("")){
                    sql = "cpfFuncionario = '" + cpf + "'";
               }
 
            if (!nome.equals("")){
                if (!sql.equals(""))
                    sql += sql + " AND nomeFuncionario LIKE '%" + nome + "%'";
                else{
                    sql += " nomeFuncionario LIKE '%" + nome + "%'";
                }
            }
              
         
            if (!filial.equals("")){
                if (!sql.equals(""))
                    sql += " AND filialFuncionario LIKE '%" + filial + "%'";
                else{
                    sql = " filialFuncionario LIKE '%" + filial + "%'";
                }
            }
            
            
                if (!sql.equals(""))
                    sql += "SELECT * FROM tbfuncionario WHERE '" + sql + "'";

:(

_fs

Rocha … se eu falar “minha geladeira” quebrou pro técnico, ele saberá o problema?

O que não funciona? Que exceção você recebe? Qual linhas o compilador tá acusando?

Outro detalhe, há um erro na última linha do código que você postou. Não ajuda né? hehe você está colocando aspas simples em volta de todo o código montado após o where.

jcranky

Não sei o que está errado no seu código, mas já no título do seu tópico… heheheh Tente colocar um título mais sugestivo do que “o que está errado” :wink:

C

Olá rocha, talvez não seja

sql = "cpfFuncionario LIKE '" + cpf + "'";

ao invés de

sql = "cpfFuncionario = '" + cpf + "'";

Ahh, e só complementando o que o Lipe falou, vc deve usar :

if (!"".equals(nome))

pois assim caso nome seja null, vc evita um nullpointer…

_fs

Isso mesmo chico :smiley: melhor ainda do que evitar a nullpointerException, você nunca vai saber que ela existiu! YEAH! Que preguiça de tratar erros han? :?

ass Lipe[Chato_pra_Caralho]

C

Ae Lipe
Bom, acho que para esse caso (o de montar uma busca dinâmica) não há problema em evitar o NullPointer.
Dessa forma vc pode criar um método no seu DAO que recebe uma instância qualquer e faz uma busca apenas pelos atributos que estiverem “preenchidos” naquela instância.

rocha

Galera fiz assim o código....

if (!"".equals(cpf)){
                    sql = "cpfFuncionario LIKE '" + cpf + "'";
               }
 
            if (!"".equals(nome)){
                if (!"".equals(sql))
                    sql += sql + " AND nomeFuncionario LIKE '" + nome + "'";
                else{
                    sql += " nomeFuncionario LIKE '" + nome + "'";
                }
            }
              
         
            if (!"".equals(filial)){
                if (!"".equals(sql))
                    sql += " AND filialFuncionario LIKE '" + filial + "'";
                else{
                    sql = " filialFuncionario LIKE '" + filial + "'";
                }
            }
            
            
                if (!"".equals(sql))
                    sql += "SELECT * FROM tbfuncionario WHERE " + sql ;[quote]

mas a concatenação de strings não esta rolando pois qdo estou executando nada acontece [/quote]
Statement st = conexao.createStatement(); ResultSet rs = st.executeQuery(sql);
se eu tirar td isso e fazer um sql =  sql = "select * from tbfuncionario";
funciona o q será q estou fazendo de errado?

Rocha

rigolin

if (!"".equals(sql)) sql += "SELECT * FROM tbfuncionario WHERE " + sql ;

Não deveria ser assim:

if (!"".equals(sql)) sql = "SELECT * FROM tbfuncionario WHERE " + sql ;

Geralmente eu mando imprimir as “instruções” SQL para debugar o código.

Criado 16 de setembro de 2004
Ultima resposta 18 de set. de 2004
Respostas 9
Participantes 5