shenn  
          
              
                Agosto 19, 2011, 10:08am
               
              #1 
           
         
        
          Eae galera, tenho esse metodo de pesquisa na classe dao,  porem esta dando um erro:
Harry Potter 1 
Harry Potter 2 
 
quando eu pesquiso por harry o metodo era mostrar 2 vezes o Harry Potter 2
vlww galeraa
[code]
		while (rs.next()){
			filmes.setNomefilme(rs.getString(1));
			filmes.setAno(rs.getString(2));
			filmes.setIdRestricao(rs.getString(3));
			filmes.setDescricao(rs.getString(4));
			filmes.setGenero(rs.getString(5));
			filmes.setMidiavhs(rs.getBoolean(6));
			filmes.setMidiabluray(rs.getBoolean(7));
			filmes.setMidiadvd(rs.getBoolean(8));
			listaDeNome.add(filmes);
		}
		ps.execute();
		ps.close();
		logger.info("Finalizando metodo listar filmes");
		return listaDeNome;
	} catch (SQLException e) {
		logger.error("Error metodo listar filmes");
		e.printStackTrace();
		return null;
	}
}[/code] 
        
           
         
            
       
      
        
          
          
            nel  
          
              
                Agosto 19, 2011, 10:10am
               
              #2 
           
         
        
          Oi!
Não seria somente LIKE ao invés do ILIKE?
         
        
           
         
            
       
      
        
        
          nel
Acredito que o bd dele seja postgres, e o ILIKE não é case sensitive. Acho que esse não é o problema.
shenn
         
        
           
         
            
       
      
        
          
          
            shenn  
          
              
                Agosto 19, 2011, 10:22am
               
              #4 
           
         
        
          estou usando o postgres
entao pelo que andei pesquisando o ilike é tipo um case sensitive
isso que eu não sei porque ele esta retornando o harry potter 2 duas vezes =/
         
        
           
         
            
       
      
        
          
          
            nel  
          
              
                Agosto 19, 2011, 10:24am
               
              #5 
           
         
        
          Não não Henrique.
Eu recomendo dar um System.out.println() na string que está setando no seu PreparedStatement para confirmar que o conteúdo passado está correto.
         
        
           
         
            
       
      
        
          
          
            shenn  
          
              
                Agosto 19, 2011, 10:27am
               
              #6 
           
         
        
          eu ja fiz um debug, ele esta dando 2 voltas no while, mas nas duas ele pega o harry potter 2
         
        
           
         
            
       
      
        
          
          
            shenn  
          
              
                Agosto 19, 2011, 11:01am
               
              #7 
           
         
        
          galera consegui achar o erro, mas mesmo assim obrigado pela ajuda
	public List<Filmes> pesquisarNome(Filmes filmes1) {
		String sql = "SELECT * FROM tb_filmes WHERE nomefilme ILIKE ?";
		try {
			logger.info("Iniciando metodo listar filmes por nome");
			PreparedStatement ps = conexao.prepareStatement(sql);
			ps.setString(1, "%" + filmes1.getPesquisarnome() + "%");
			ResultSet rs = ps.executeQuery();
			List<Filmes> listaDeNome = new ArrayList<Filmes>();
			while (rs.next()){
				Filmes filmes = new Filmes (); // precisava disso
				filmes.setNomefilme(rs.getString(1));
				filmes.setAno(rs.getString(2));
				filmes.setIdRestricao(rs.getString(3));
				filmes.setDescricao(rs.getString(4));
				filmes.setGenero(rs.getString(5));
				filmes.setMidiavhs(rs.getBoolean(6));
				filmes.setMidiabluray(rs.getBoolean(7));
				filmes.setMidiadvd(rs.getBoolean(8));
				listaDeNome.add(filmes);
			}
			ps.execute();
			ps.close();
			logger.info("Finalizando metodo listar filmes");
			return listaDeNome;
		} catch (SQLException e) {
			logger.error("Error metodo listar filmes");
			e.printStackTrace();
			return null;
		}
	}