Problema com ArrayList ((Resolvido))

12 respostas
H

Pessoal, estou usando o NetBeans para tentar realizar isso. Tenho o Seguinte problema

tenho que quando clicar no botão salvar, ele salve no registro os dados e acrescente estas informações em um table model.

Meu problema é: eu faço o primeiro lançamento nome: Maria (OK)
faço o segundo lançamento nome: João(Problema)

a minha tebela fica:
João
João

segue parte do código:

public void cadastrar() throws Exception {
        cadastrarDAO dao = new cadastrarDAO ();
        dao.inserir(cadastrar);
        lista = gerarlista();

    }
private List<Cadastro> gerarlista() {
        

        cadastrar.getNome();


        lista.add(cadastrar);



        return lista;

experimentei fazer assim para ver o que poderia ocorrer.....

public void cadastrar() throws Exception {
 System.out.println(lista);
        cadastrarDAO dao = new cadastrarDAO ();
        dao.inserir(cadastrar);
        lista = gerarlista();
 System.out.println(lista);

    }

quando mandei rodar 1 cadastro ficou [] e depois com o nome Maria
quando mandei o segundo cadastro ficou Joao, Joao direto
o que ta me deixando louco é que antes disso eu não uso a tabela para absolutamente nada!!

estou usando Table Model

Alguem pode me dar uma luz?

12 Respostas

Rodrigo_Sasaki

Cara, seu código tá muito confuso. Não sei muto bem o que comentar sobre ele, mas um código pra adicionar um item na lista ficaria algo assim:public void adicionarCadastro(Cadastro cadastro){ minhaListaDeCadastros.add(cadastro); } E pra chamar fica algo assimpublic void metodoQueAdicionaCadastro(){ Cadastro cadastro = new Cadastro(); // seta todos os valores necessários adicionarCadastro(cadastro); }

chibana

Concordo com o Rodrigo Sasaki, é a melhor maneira, o código fica mais limpo e fácil de entender.
Por favor, se ainda encontrar dificuldades, tente ser um pouco mais claro, mas acredito que utilizando a solução do rodrigo, dará certo

H

Vou postar o código certinho, acho que as minhas mudanças fez ficar meio confuso,

estou fazendo um sistema de postagem segue o que possuo:

classe Controller
public void cadastrarPostagemSistema() throws Exception {

        PostagemDAO dao = new PostagemDAO();
        dao.inserir(listaPostagem, postagem);
        


    }

ClasseDAO

public List<Postagem> inserir(List<Postagem> listaPostagem,Postagem postagem) {
        

        String sql = "INSERT INTO CADASTRO_POSTAGEM(DATA, SERVICO, ETIQUETA, DESTINATARIO,DOCUMENTO,ENDERECO,COMPLEMENTO,OBS,BAIRRO,CIDADE,ESTADO,CEP,ALTURA,LARGURA,COMPRIMENTO,PESO,AR,MP,VD) VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
    
        try {
            try (PreparedStatement stmt = connection.prepareStatement(sql)) {
                stmt.setString(1, postagem.getData());
                stmt.setString(2, postagem.getServico());
                stmt.setString(3, postagem.getEtiqueta());
                stmt.setString(4, postagem.getDestinatario());
                stmt.setString(5, postagem.getDocumento());
                stmt.setString(6, postagem.getEndereco());
                stmt.setString(7, postagem.getComplemento());
                stmt.setString(8, postagem.getObs());
                stmt.setString(9, postagem.getBairro());
                stmt.setString(10, postagem.getCidade());
                stmt.setString(11, postagem.getEstado());
                stmt.setString(12, postagem.getCep());
                stmt.setString(13, postagem.getAltura());
                stmt.setString(14, postagem.getLargura());
                stmt.setString(15, postagem.getComprimento());
                stmt.setString(16, postagem.getPeso());
                stmt.setString(17, postagem.getAr());
                stmt.setString(18, postagem.getMp());
                stmt.setString(19, postagem.getVd());
                stmt.execute();
  
   listaPostagem.add(postagem);

                
            }
        } catch (SQLException u) {
            throw new RuntimeException(u);
        }
        return listaPostagem;
        

    }

Porem toda vez que eu realizo esse cadastro
Primeiro Registro fica ok!
Segundo Registro em diante, ele renomea todos os campos com os mesmo dados lançado por ultimo
Ou seja: Primeiro lançamento: Campo 1 - Maria
Segundo Registro: Campo 1 Joao, Campo 2 Joao,
e assim vai indo
Terceiro Registro Campo 1- Roberto, Campo 2 Roberto, Campo 3 Roberto....
Entende Campo a linha.

Alguem pode me dar uma luz?

pmlm

Aposto que o problema está não a gravar mas a carregar a tabela. Deves estar a usar o mesmo objecto.

H

então me ajude nesta lógica:

eu tenho o listaPostagem

eu faço o primeiro cadastro e no fim

listaPostagem.add(postagem);

eu nao entendo porque quando eu mando adicionar mais um

listaPostagem.add(postagem);

ele pega esse ultimo e seta estes para a lista inteira

pmlm

Porque nunca em lado nenhum deves ter feito novamente um new Postagem()

H

Maravilha… tava faltando mesmo, corrigiu todos os problemas exceto 1.

quando vou adicionar na lista

A primeira coluna da linha de cima pega o valor da mesma coluna da linha de baixo, mais uma luz =) ?

pmlm

Só vendo código…

H
public void cadastrarPostagemSistema() throws Exception {
                PostagemDAO dao = new PostagemDAO();
        dao.inserir(listaPostagem, postagem);
            }
public List<Postagem> inserir(List<Postagem> listaPostagem,Postagem postagem) {
        
        

        String sql = "INSERT INTO CADASTRO_POSTAGEM(DATA, SERVICO, ETIQUETA, DESTINATARIO,DOCUMENTO,ENDERECO,COMPLEMENTO,OBS,BAIRRO,CIDADE,ESTADO,CEP,ALTURA,LARGURA,COMPRIMENTO,PESO,AR,MP,VD) VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
    
        try {
            try (PreparedStatement stmt = connection.prepareStatement(sql)) {
                stmt.setString(1, postagem.getData());
                stmt.setString(2, postagem.getServico());
                stmt.setString(3, postagem.getEtiqueta());
                stmt.setString(4, postagem.getDestinatario());
                stmt.setString(5, postagem.getDocumento());
                stmt.setString(6, postagem.getEndereco());
                stmt.setString(7, postagem.getComplemento());
                stmt.setString(8, postagem.getObs());
                stmt.setString(9, postagem.getBairro());
                stmt.setString(10, postagem.getCidade());
                stmt.setString(11, postagem.getEstado());
                stmt.setString(12, postagem.getCep());
                stmt.setString(13, postagem.getAltura());
                stmt.setString(14, postagem.getLargura());
                stmt.setString(15, postagem.getComprimento());
                stmt.setString(16, postagem.getPeso());
                stmt.setString(17, postagem.getAr());
                stmt.setString(18, postagem.getMp());
                stmt.setString(19, postagem.getVd());
                stmt.execute();
  
   listaPostagem.add(postagem);

                
            }
        } catch (SQLException u) {
            throw new RuntimeException(u);
        }
        return null;
         



    }

Meu código está assim!

pmlm

O campo data de Postagem é uma String?

H

só esta como String no sistema pora causa do formato…, bo banco ele é tipo data…

H

Olá, sim no banco de dados é tipo DATA

no model Postagem é tipo String pois eu converto a data para efetuar o cadastro no banco de datos.

estou tentando a dias arruma isso será que tem mais alguma dica para me ajudar?
Obrigado

EDIT: Ufa consegui resolver, problema estava pois o campo “Serviço” estava em um combobox, o que fazia nao atualizar o campo corretamente

Abraços

Criado 27 de fevereiro de 2013
Ultima resposta 4 de mar. de 2013
Respostas 12
Participantes 4