Editar banco direto da jtable?

Meus caros:

  • Gostaria de saber como posso proceder para atualizar registros no banco direto da JTable.
  • Gostaria que me dissessem quais métodos devo estudar, que me direcionassem…

Banco de dados?? Isso demanda muito trabalho:
Colocar um ouvente, que quando o cara editar aa tabela, executar a função X.
o X vai pegar a linha editada e a coluna, vai converter do modelo adequado e mandar pra camada service.
Do service manda pro Dao e salva no banco

Boa noite Matheus!

Mas essa é a minha dúvida!
Minha linha de raciocínio é obter o valor da linha selecionada na tabela, com a coluna ID, que no caso, vai me retornar o ID do registro.
Depois que não sei como fazer…
Estou pensando em pegar esse id, e percorrer o resto das colunas para montar um objeto pra atualizar no banco.
Aí não sei se é melhor montar um array de objetos da tabela toda e jogar no banco. Mas acho que vai ficar lento.

Pode me dar uma luz?

Minha tabela, no caso, vai ter um punhado de registros, cerca de 50 em cada.
Caso esse que acho que sair fazendo um monte de updates no banco vai ser lento…

Cara, nada contra, apenas um ponto de vista diferente, sendo sincero, acredito que esta prática seja totalmente inviável, pois demanda muito esforço e tempo pra pouco resultado, mesmo que fosse a nível de estudo!
Acredito que valha mais a pena você investir seu tempo estudando e aprendendo sobre UI / UX (Interfaces), que com certeza vai te acrescentar muito mais valor a nível de conhecimento.

1 curtida

Jonathan, boa tarde!

Estou desenvolvendo uma aplicação que gera pedidos. Então, cada pedido tem vários itens.
Pelo que conheço, a melhor forma de editar esses itens é a JTable.
Pois preciso monitorar a data de chegada de cada item separado, uma vez que são vários fornecedores que atendem os itens.

Teria uma outra forma de fazer isso editando facilmente como na JTable?
Gostaria que me mostrasse um exemplo. Quero fazer da melhor forma possível.

Agradeço!

O que isso tem a ver para resolver o problema dele ?

Assim como todo componente, o JTable tem um listener para escutar eventos, basicamente o que você tem que fazer é registrar um listener para a edição de células. Daí quando a célula for editada é só pegar o id e passar os valores para um DAO fazer a atualização. É um update só. Mas você precisa ser mais específico na sua dúvida se que uma ajuda mais específica.

Guia para o JTable:
https://docs.oracle.com/javase/tutorial/uiswing/components/table.html

Fabio eu acredito que compreendi a sua ideia, geralmente, quando tenho telas que movimentam itens/serviços e etc, eu trabalho da seguinte forma, crio uma view com os campos necessários para o tipo de item que se deseja trabalhar, juntamente com uma jTable, a ideia de trabalhar dessa forma é: prender a atenção do usuário a um único item de cada vez, tornando assim a operação de certa forma um pouco mais tranquila, e evitando possíveis erros que podem ocorrer com o usuário alterando diretamente na jTable.

Segue um exemplo:

1 curtida

Não estou resolvendo o problema de ninguém meu caro, apenas estou mostrando uma opção diferente para solucionar o problema de uma forma mais simples, como citei na minha resposta este é o meu ponto de vista!

1 curtida

É que do jeito que você escreveu na primeira vez ficou parecendo que ele deveria largar o projeto dele e estudar UX :grin:, mas agora você esclareceu …

rmendes08, boa tarde!

Na minha lista de pedidos aos fornecedores, terão vários itens, cada um com um fornecedor diferente.
Preciso monitorar a data de chegada, bem como outras datas, de item por item.

Quando for editar o pedido, vou alterar alguns itens, não todos.
Gostaria de saber se tem como pegar esses itens editados e mandar em um update só, ou se é como vc disse: tenho que fazer um update para cada registro alterado?

Obrigado pela atenção!

Jonathan,

Eu até pensei em fazer isso, mas gostaria de agilizar o processo para os usuários editando na própria JTable e com um botão de Salvar para atualizar os itens editados na base…

Nesse caso sim, você vai precisar fazer 1 update para cada linha. Mas pode ficar tranquilo que para poucas linhas você não vai ter problema de lentidão.

Tem alguma idéia de como posso fazer isso sem fazer a atualização assim que o usuário editar?
Gostaria que ele editasse todos os itens que tem pra editar e no final clicasse no botão salvar para atualizar…

Analisando o que você disse eu andei pensando aqui, vamos imaginar o seguinte cenário, se o usuário altera diretamente na jTable um pedido com 30 itens inseridos, do total de trinta itens o usuário altera 15 registros, se você não atualizar um a um em tempo real conforme o usuário edita a informação, o que vai te garantir a consistência desses dados até que o usuário finalize a operação por completo ?
Ou vamos imaginar que venha a ocorrer alguma falha e o usuário ter que refazer a operação do zero, por motivos de os registros alterados ainda não terem sido salvos.

A minha idéia seria montar um array dos objetos editados e depois fazer apenas uma conexão com o banco para atualizar esses registros através de um botão salvar.

Imagino que se incluir um listener para a JTable que faça a conexão toda vez que o usuário editar uma linha vai deixar o programa lento, além de não permitir o uso de apenas uma única mensagem de confirmação para gravar os dados.

Compartilha do meu raciocínio?

Compreendi o seu raciocínio, sendo assim, acho que seria mais interessante você utilizar Lists/Collections, acredito que tenha alguns facilitadores que vão te ajudar na manipulação.

Podem me direcionar no método que crio a listener para modificações em um registro da jTable?