List, edição de JTable e atualização de banco de dados

3 respostas
Ziguifrid

A dúvida é o seguinte:

Tenho duas list.

Quando clico no botão pesquisa, os valores mostrados na JTable são armazenados em um list. Vamos chamar de lista1

A JTable é editável, então posso editar qualquer dado que eu queira.

Quando clico no botão atualizar, o sistema pega os valores da JTable e insere em um list. Vamos chamar de lista2.

Agora tenho duas listas, a lista1 como os dados eram a lista2 como os dados ficaram depois da edição.

Pego estas duas listas e passo como parâmetro para um função.

Ex:

atualizar.atualizar_dados(lista1, lista2);

Nesta função quero fazer o update no banco de dados.

Agora aí que está a duvida.

Eu pego as duas listas e junto em uma.

List juntarlistas = new ArrayList(); juntarlistas.addAll(lista1); juntarlistas.addAll(lista2);

Agora como vou correr esta lista e fazer os updates?

Faz de conta que esta lista são apenas nomes.

String sql = "update usuarios set nome=? where nome=?" PreparedStatement ps = con.prepareStatement(sql); ps.setString(1,c.getNomeAntes()); ps.setString(2,c.getNomeDepois()); ps.executeUpdate();

Como vou pegar estes parâmetros 1 e 2 de todos os nomes que modifiquei?

Alguém já fez isto?

3 Respostas

AndreSorge

Boa Tarde!

o que eu faria é o seguinte, na tabela do banco de dados, você teria dois atributos Codigo e Nome, Codigo sendo a PK.
No java você teria um objeto que representa essa tabela, blz?

Então, ao realizar uma determinada consulta você retorna uma lista desse objeto e popula o JTable e manda exibir somente o campo Nome…
Ao realizar uma edição do campo nome, o campo Codigo ainda é o PK do registro…
tendo essa informação a clausula WHERE fica com o campo Codigo e o SET com o novo nome…

Entendeu?

Ziguifrid

AndreSorge:
Boa Tarde!

o que eu faria é o seguinte, na tabela do banco de dados, você teria dois atributos Codigo e Nome, Codigo sendo a PK.
No java você teria um objeto que representa essa tabela, blz?

Então, ao realizar uma determinada consulta você retorna uma lista desse objeto e popula o JTable e manda exibir somente o campo Nome…
Ao realizar uma edição do campo nome, o campo Codigo ainda é o PK do registro…
tendo essa informação a clausula WHERE fica com o campo Codigo e o SET com o novo nome…

Entendeu?

Boa,

Só que a questão principal não é esta.

Até porque é um exemplo.

O negócio é.

Fazer mais de uma atualização no banco de dados usando List.

Como fazer?

Ou qualquer outro método, mesmo não usando a List.

Mas como vou fazer uma atualização em massa?

AndreSorge

Eita…

Não entendi muito bem a dúvida então, mas para percorrer a lista você pode utilizar um FOR

exemplo:

for(Objeto c : listaDoJTable){

    String sql = "update usuarios set nome=? where nome=?"  
    PreparedStatement ps = con.prepareStatement(sql);  
                ps.setString(1,c.getNomeAntes());  
                ps.setString(2,c.getNomeDepois());  
                ps.executeUpdate();  
}

Com isso você percorre todos os objetos da lista e irá realizar o update em massa

Era isso?

Criado 2 de abril de 2013
Ultima resposta 2 de abr. de 2013
Respostas 3
Participantes 2