Erro em formatador de data dentro do while

5 respostas
D

Pessoal, alguem poderia me ajudar.

tenho o seguinte codigo.

public ArrayList<Fornecedor> pegarDados(String nome){


	Conexao conect = new Conexao();
	conect.ConexaoBD();

	//DECLARA ARRAY	
	ArrayList <Fornecedor> cli = new ArrayList<Fornecedor>();
		  
		  try {
              Statement status = conect.conexao.createStatement ();
              ResultSet resultado = status.executeQuery ( "select * from cad_forn where upper(nome) like '%"+nome.toUpperCase()+"%'" );
             
              
              while ( resultado.next () ) {
            	
            	  SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); 
            	  
            	  
            	  Date datei = null;  
            	  String dataInclusao = null;
          		String sDatei = ( resultado.getString ( "inclusao" ) ) ;//datai;  
          		
          		try {  
          		    datei = new Date(dateFormat.parse(sDatei).getTime());  
          		    dataInclusao = new SimpleDateFormat("dd/MM/yyyy").format(datei); 
          		
          		} catch (ParseException ex) {  
          		   // Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);  
          		}              	  
            	  
            	  
            	  
            	  
         
            	  Fornecedor vet = new Fornecedor();
            	
                  vet.cod=( resultado.getInt ( "codigo" ) );  
                  vet.nome=( resultado.getString ( "nome" ) ); 
                  vet.datae=(dataInclusao );
                  
                  cli.add(vet);
            	               }
      } catch ( SQLException ex ) {
    	  
    	  
              System.out.println ( "Erro ao ler Dados!" );
      }
		
      return (ArrayList<Fornecedor>) cli;
     
}}

Quanto retorna apenas um resultado nao apresenta o erro.
Porem, quando o select apresenta mais de um resultado o erro da

Exception in thread "main" java.lang.IllegalArgumentException: Cannot format given Object as a Date
at java.text.DateFormat.format(Unknown Source)
at java.text.Format.format(Unknown Source)
at sql.Teste.main(Teste.java:29)

Alguem tem ideia o que pode ser?

5 Respostas

davidbuzatto

Crie os formatadores fora do while, afinal vc precisa apenas de dois formatadores, não uma instância diferente de cada um a cada iteração.

Quanto ao erro: [color=red]Cannot format given Object as a Date [/color], em qual linha está acontecendo? Basicamente o que está sendo gerado não é uma representação correta de uma data ou não é um objeto “formatável”.

[]´s

D

no caso ae e a linha 25.
E ali que esta dando o erro.

Tem alguma ideia ?

davidbuzatto

sDatei não está no formato correto.
Qual o valor de sDatei?

D

Ta sim, pq e estranho.
So da o erro quando tem mais de 1 resultado.
exemplo se o select retornar apenas um resultado, nao ira dar problema

D

So para deixar arquivado

Resolvido o problema, e q alguns de meus clientes nao tinha data preenchida, ae na hora da conversao dava erro

Criado 8 de dezembro de 2010
Ultima resposta 9 de dez. de 2010
Respostas 5
Participantes 2