1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Retorno de SQL(arraylist - mysql) só retorna um objeto com valor. (deveria ser mais)

ATUALIZAÇÃO Bom dia galera ! Após idas e vindas estou conseguindo obter algum exito na minha jornada, mas estou na seguinte situação: A SQL repassada para o banco Mysql deveria retornar vários objetos referente a consulta realizada no banco, porém só retornar um único objeto com os valores que preciso.

MÉTODO CONTIDO NA CLASSE DAO QUE DEVERIA IMPORTAR TODOS OS DADOS DA CONSULTA, ARMAZENAR EM UM ARRAYLIST, E RETORNA-LO.

public List<Interfaces.GastoEnergeticoAtleta> getGastosPorIdEntreDatas(int id, String data_inicial, String data_final) { 
    Connection connection = null; 
    PreparedStatement pstm = null; 
    ResultSet rs = null; 
    ArrayList<Interfaces.GastoEnergeticoAtleta> gasto_energetico_atletas = new ArrayList<Interfaces.GastoEnergeticoAtleta>(); 
    try { 
        connection = FactoryConnection.getConexao(); 
        pstm = connection.prepareStatement(LISTAR_POR_ID_ENTRE_DATAS);
        pstm.setInt(1, id); 
        pstm.setString(2, data_inicial); 
        pstm.setString(3, data_final); 
        rs = pstm.executeQuery(); 
        while (rs.next()) { 
            Interfaces.GastoEnergeticoAtleta gastos_atletas = new Interfaces.GastoEnergeticoAtleta(); 
            gastos_atletas.setCod(rs.getInt("acogasteneatl_cod"));
            gastos_atletas.setCod_atleta(rs.getInt("acogasteneatl_peratl_cod"));
            gastos_atletas.setCod_tipTreinamento(rs.getInt("acogasteneatl_tiptre_cod"));
            gastos_atletas.setData(rs.getString("acogasteneatl_data"));
            gastos_atletas.setDuracao(rs.getString("acogasteneatl_duracao"));
            gastos_atletas.setGasto_gerado(rs.getFloat("acogasteneatl_gasto_gerado"));
            gasto_energetico_atletas.add(gastos_atletas);
        } 
        FactoryConnection.fechaConexaoRs(connection, pstm, rs); 
    } catch (Exception e) { 
        JOptionPane.showMessageDialog(null, "Erro ao listar os gastos." + e.getMessage()); 
    } 
    return gasto_energetico_atletas; 
}

A SQL que corresponde a LISTAR_POR_ID_ENTRE_DATAS é :

private final String LISTAR_POR_ID_ENTRE_DATAS = "SELECT * FROM tb_acompanhamento_gasto_energetico_atleta WHERE acogasteneatl_cod=? AND acogasteneatl_data BETWEEN ? and ?";

Porém quando tento instancia-lo na classe executável através do método :

    private void JLimportarMouseClicked(java.awt.event.MouseEvent evt) {                                        
Metodos.GastoEnergeticoAtletaDao gasto_do_atleta_por_data = new Metodos.GastoEnergeticoAtletaDao();        

 List<Interfaces.GastoEnergeticoAtleta> todos = gasto_do_atleta_por_data.getGastosPorIdEntreDatas(Integer.parseInt(JTFid.getText()),converterDataPadraoAmericano(JDCDatainicial.getDate()),converterDataPadraoAmericano(JDCDatafinal.getDate())); 
        for (int i = 0; i < todos.size(); i++) {
            GastoEnergeticoAtleta atleta = todos.get(i);
            JOptionPane.showMessageDialog(null,"Tamanho = "+todos.size());
             JOptionPane.showMessageDialog(null,"Código Mov : "+atleta.getCod()+"\n"
                                               +"Código Atle: "+atleta.getCod_atleta()+"\n"
                                               +"Código Trei: "+atleta.getCod_tipTreinamento()+"\n"
                                               +"Código Data: "+atleta.getData()+"\n"
                                               +"Código Dura: "+atleta.getDuracao()+"\n"
                                               +"Código Gast: "+atleta.getGasto_gerado());
        }
    }

O retorno que obtenho é apenas um único objeto.. Inclusive coloquei essa linha :

JOptionPane.showMessageDialog(null,"Tamanho = "+todos.size());

Só para saber o tamanho que estava sendo gerado, e como retorno, obtenho 1.

O que pode estar acontecendo para eu não estar obtendo todos os elementos que deveria receber (no banco tem 35 registros que deveria ser retornado pela SQL repassada como query).

Att

  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

2 respostas

Não é a resposta que estava procurando? Procure outras perguntas com as tags arraylist java ou faça a sua própria pergunta.