Persistir dados de uma lista

3 respostas
erasmo_tec

Bom dia a todos.

Estou com uma duvida na persistencia de dados em uma lista.
O que ocorre que quando mando persistir os dados que estão na minha lista ele insere duas vezes a mesma coisa.

Alguem sabe o porque disso.

segue os metodos que criei.

o metodo que utilizo para persistir a minha lista é o consolida viewPerf

private void populaArquivo(ViewPerf viewPerf, ResultSet rs) throws SQLException {
        viewPerf.setCobradorPadrao(rs.getString("cobradorPadrao"));
        viewPerf.setNomeCobradorPadrao(rs.getString("nomeCobradorPadrao"));
        viewPerf.setDataAgora(rs.getString("dataAgora"));
        viewPerf.setQtdLoteInicial(rs.getString("qtdLoteInicial"));
        viewPerf.setPagamento(rs.getString("pagamento"));
        viewPerf.setDevolucao(rs.getString("devolucao"));
        viewPerf.setPerdaParaPdd(rs.getString("perdaParaPdd"));
        viewPerf.setSaldo(rs.getString("saldo"));
        viewPerf.setRecebidos(rs.getString("inclusao"));
        viewPerf.setQtdLoteFinal(rs.getString("qtdLoteFinal"));
        viewPerf.setVlRecuperado(rs.getString("vlRecuperado"));
        viewPerf.setCodigoFinanceira(rs.getString("codigoFinanceira"));
    }

    public boolean insereViewPerf(ViewPerf viewPerf) throws SQLException, ClassNotFoundException {
        PreparedStatement ps = pegaDeclaracaoPreparada("insert into tbl_fin_perf_consolidada values(?,?,?,?,?,?,?,?,?,?,?,?) ");
        ps.setString(1, viewPerf.getCobradorPadrao());
        ps.setString(2, viewPerf.getNomeCobradorPadrao());
        ps.setString(3, viewPerf.getDataAgora());
        ps.setString(4, viewPerf.getQtdLoteInicial());
        ps.setString(5, viewPerf.getPagamento());
        ps.setString(6, viewPerf.getDevolucao());
        ps.setString(7, viewPerf.getSaldo());
        ps.setString(8, viewPerf.getRecebidos());
        ps.setString(9, viewPerf.getQtdLoteFinal());
        ps.setString(10, viewPerf.getVlRecuperado());
        ps.setString(11, viewPerf.getCodigoFinanceira());
        ps.setString(12, viewPerf.getPerdaParaPdd());
        ps.execute();
        //ps.close();
        boolean toReturn = ps.execute();
        ps.close();
        return toReturn;

    }

    public List<ViewPerf> consolidaViewPerf() throws SQLException, ClassNotFoundException {

        List<ViewPerf> toReturn = new LinkedList<ViewPerf>();
        ResultSet rs = pegaDeclaracao().executeQuery("select * from view_perf");
        while (rs.next()) {
            ViewPerf viewPerf = new ViewPerf();
            populaArquivo(viewPerf, rs);
            toReturn.add(viewPerf);
            insereViewPerf(viewPerf);
        }
        rs.close();
        return toReturn;





    }

3 Respostas

finotti

[edit] o colega vdb apresentou a solução correta [/edit]

V

Ola…

Perceba que no seu metodo insereViewPerf voce esta executando 2x o PreparedStatement

ps.execute();  //1a. vez -- retire esta linha
//ps.close();  
boolean toReturn = ps.execute();//  2a. vez
ps.close();  
return toReturn;
erasmo_tec

era isso mesmo. não tinha reparado nesse detalhe. obrigado…

Criado 23 de junho de 2009
Ultima resposta 23 de jun. de 2009
Respostas 3
Participantes 3