Pessoal estou com um problema na hora que vou fazer uma filtro pelo nome no meu aplicativo utilizando Flex quando eu pesquiso,o grid me retorna com um valor 0.Acredito que o problema seja no java,pois quando pesquiso por um valor de tipo integer não tenho problema.
publicstaticClientepesquisar(Stringnome){Clientecliente=newCliente();try{Stringsql="select codigo,nome,cpf from cliente where Nome like UPPER(?)";Connectionconn=ConnectionFcatory.getConnection();PreparedStatementstmt=conn.prepareStatement(sql);stmt.setString(1,'%'+nome+'%');ResultSetres=stmt.executeQuery();if(res.next()){cliente.setCodigo(res.getInt("CODIGO"));cliente.setNome(res.getString("NOME"));cliente.setCpf(res.getString("CPF"));}stmt.close();res.close();conn.commit();}catch(SQLExceptione){e.printStackTrace();}returncliente;}
No meu funciona assim certim, no banco de dados MySQL e SQLServer
Mudou a passagem de parâmetros em vez de aspas simples para aspas duplas?? assim:
Tente também executar o depurador e verificar o valor do parâmetro passado se tem alguma coisa para buscar que contenha esse nome no banco e se ele entre no loop!
horochovec
Isso pode variar de SGDB para SGDB… Por exemplo, o Postgres possui uma função chamada ILIKE que trata automaticamente o maiúsculo/minúsculo de uma string.
Se você usar LIKE = ‘%stefan%’, ele vai retornar qualquer conteúdo que contenha stefan tanto a esquerda quando a direita da String.
Se você usar LIKE = ‘stefan%’, ele vai retornar qualquer conteúdo que contenha stefan no início da string.
Se você usar LIKE = ‘%stefan’, ele vai retornar qualquer conteúdo que contenha stefan no final da string.
Tenta assim:
String sql = "select codigo,nome,cpf from cliente where UPPER(Nome) like ?";
Connection conn = ConnectionFcatory.getConnection();
PreparedStatement stmt = conn.prepareStatement(sql);
stmt.setString(1,nome.toUpperCase());
cristianoventura
Tentei dessa forma Também Stefan,porém da erro.
no meu flex coloquei o seguinte evento.
privatefunctionResultadoPesquisa(event:ResultEvent){//primeiropegueoresultado//casoestejaretornandootipoClientequejáestámapeadocorretamentenoFlexfaçaissovarclienteAux:Cliente=event.resultasCliente;//convertendoobjetorecebido,casonãorecebanadaesseobjetoirárecebernullif(clienteAux!=null){dados_cliente.removeAll();//limpaalistaecomelasuadatagriddados_cliente.addItem(clienteAux);//adicionaseuobjetorecebidoAlert.show("Cliente com id "+clienteAux.nome);}else{Alert.show("Sua pesquisa não retornou resultado!!!");}}
Código Java
publicstaticClientepesquisar(Stringnome){Clientecliente=newCliente();try{Stringsql="select codigo,nome,cpf from cliente where UPPER(Nome) like ?";Connectionconn=ConnectionFcatory.getConnection();PreparedStatementstmt=conn.prepareStatement(sql);stmt.setString(1,nome.toUpperCase());ResultSetres=stmt.executeQuery();if(res.next()){cliente.setCodigo(res.getInt("CODIGO"));cliente.setNome(res.getString("NOME"));cliente.setCpf(res.getString("CPF"));}stmt.close();res.close();conn.commit();}catch(SQLExceptione){e.printStackTrace();}
Tentei dessa forma Stefan que você passou mais estar dando Erro.O meu método pesquisar_cliente.Tem alguma coisa errada com ele?
o grid me retorna um valor 0 conforme a imagem nesse link
provavelmente seu erro pode está nesse trexo já que ele te retorna o resultado
if (res.next()){
cliente.setCodigo(res.getInt("CODIGO"));
cliente.setNome(res.getString("NOME"));
cliente.setCpf(res.getString("CPF"));
}
Algumas dicas são:
-tente mudar os campos recebidos para que ficam todos em minúsculo, igual você faz a pesquisa.
-Verifique os métodos sets
-tente também executar esse código no seu banco
tente passar com o debugador ai, caso tenha impresso algum erro coloca ai para analisarmos melhor!
cristianoventura
O meu sistema esta pesquisando pelo nome mais gostaria de saber como faço para que a consulta pesquise pelo maiúsculo e minúsculo segue o meu código para que vocês me ajudem obrigado.
publicstaticClientepesquisar(Stringnome){Clientecliente=newCliente();try{Stringsql="select codigo,nome,cpf from cliente where upper(nome) like ?";Connectionconn=ConnectionFcatory.getConnection();PreparedStatementstmt=conn.prepareStatement(sql);stmt.setString(1,"%"+nome+"%");ResultSetres=stmt.executeQuery();if(res.next()){cliente.setCodigo(res.getInt("codigo"));cliente.setNome(res.getString("nome"));cliente.setCpf(res.getString("cpf"));}stmt.close();res.close();conn.commit();}catch(SQLExceptione){e.printStackTrace();}returncliente;}