Array Index Out Of Bounds Exception

ArrayIndexOutOfBoundsException
Meu código segue abaixo, alguém pode me dizer o pq do erro?

package dao;

import java.sql.;
import java.util.
;
import beans.Aniversariantes;

public class ClasseDao {

public static ArrayList retornaDados(){
    Connection conn = null;
    
    ResultSet rs = null;
    Statement stmt = null;                        
    String SQL = "SELECT NOME, DESCRICAO, To_Char(DTNASCIMENTO, 'DD/MON')AS DT_NASCIMENTO FROM VRM_SECAO VRMS," +
    			 "VRM_FUNCIONARIO VRMF, VRM_PESSOA VRMP WHERE VRMF.CODSITUACAO <> 'D' AND VRMF.CODFUNCAO <> 135 " +
    			 "AND VRMF.CODFUNCAO <> 136 AND VRMF.CODPESSOA = VRMP.CODIGO AND VRMS.SECAODESATIVADA = 0 " +
    			 "AND To_Char(DTNASCIMENTO, 'MON') = (SELECT To_Char(SYSDATE, 'MON') FROM DUAL) AND " +
    			 "VRMF.CODSECAO = VRMS.CODIGO ORDER BY To_Char(VRMP.DTNASCIMENTO, 'DD') ASC",
    	   data = "";
    String[] dataArray = new String[1];
    
    ArrayList lista = new ArrayList();
    
    try{
        conn = ClasseDao.getConexao();
        stmt = conn.createStatement();
        rs = stmt.executeQuery(SQL);
        
        while(rs.next()){                    
            Aniversariantes an = new Aniversariantes();
            an.setNome(rs.getString("nome"));
            an.setSetor(rs.getString("descricao"));
            data = rs.getString("dt_nascimento");
            dataArray = data.split("/");                
            an.setDia(dataArray[0]);
            an.setMes(dataArray[1]);
            
            lista.add(an);
        }
        
    }
    catch(Exception ex){
        System.out.println("Erro: " + ex.getMessage());
        ex.printStackTrace();
    }
    
    return lista;
}

public static Connection getConexao() {
    Connection conn = null;       
    final String url = "jdbc:oracle:thin:@10.10.10.30:1521:dsvapp01";
    final String user = "fcardao";
    final String pass = "fcardao";        
    
   try{
       Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
       conn = DriverManager.getConnection(url, user, pass);           

       if (conn == null){
           System.out.println("Não foi possível efetuar a conexão");
       }
       else{
           System.out.println("Conectado com sucesso");              
       }
   }
   catch(SQLException ex){
       ex.printStackTrace();
       System.out.println("Erro1 "+ex.getMessage());
   }
   catch(ClassNotFoundException cnfex){
       cnfex.printStackTrace();
       System.out.println("Erro2 "+cnfex.getMessage());
   }
   catch(InstantiationException iex){
       iex.printStackTrace();
       System.out.println("Erro3 "+iex.getMessage());
   }
   catch(IllegalAccessException iaex){
       iaex.printStackTrace();
       System.out.println("Erro4 "+iaex.getMessage());
   }
   return conn;
 }    

}

Olá fcardao…

Esse erro ArrayIndexOutOfBoundsException ocorre em tempo de execuçao ao tentar acessar um índice inexistente no vetor, veja vc declarou o vetor de Strings como:

String[] dataArray = new String[1];

Ou seja, há apenas 1 posição no vetor, dataArray[0]

Abaixo, vc está tentando gravar no dataArray[1] , essa posição não existe no vetor, gerando tal erro.

an.setMes(dataArray[1]);

Declare o dataArray com 2 posições, dessa forma vc poderá acessar os índices dataArray[0 e dataArray[1].

Espero ter ajudado… :lol:

gosto desta exception… rs