Como atualizar elementos do Banco de Dados através de um JTable?

Gostaria de saber como faço para atualizar elementos de um banco de dados através de um JTable.

Você tem seus dados Preenchidos na tabela certo,
Basta deixar sua tabela Editável
Exemplo

CODIGO | NOME         |  CPF
   1       teste1       12345
   2       teste2       54321

Coloque um Botão, “Update” com algum evento nele e acrescente os dados abaixo
Lembrando basta readaptar ao seu…

Faça um laço para percorrer a tabela

ClienteDAO dao = new ClienteDao();
Cliente cliente = new Cliente();

for (int i = 0; i < nomeDaSuaTabela.getRowCount(); i++) {

//pegando os dados da tabela coluna por coluna e preenchendo o objeto

cliente.setCodigo(((int) nomeDaSuaTabela.getValueAt(i, 0)));//posição 0 da tabela CODIGO          
cliente.setNome((String) nomeDaSuaTabela.getValueAt(i, 1));// posição 1 da tabela NOME
cliente.setCpf((String) nomeDaSuaTabela.getValueAt(i,2));//posição 2 da sua tabela CPF

//caso de problema no cast do int

Utilize da siginte forma

Object codigo = (Object) nomeDaSuaTabela.getValueAt(i, 0);
cliente.setCodigo(Integer.parseInt(String.valueOf(codigo)));

//faça o metodo para update, recebendo o objeto cliente

dao.updateDadosDaTabela(cliente);

System.out.println("Update Sucesso");
}

//metodo de update

public void updateDadosDaTabela(Clientes clientes) throws SQLException {
        String sql = "update clientes set nome=?, cpf=? where codigo=?";
        PreparedStatement comando = bd.prepareStatement(sql);
        comando.setString(1, clientes.getNome());
        comando.setString(2, clientes.getCpf());
        comando.setInt(3, clientes.getCodigo());
        comando.execute();
}
1 curtida

Cara, eu não programo em DAO, não deu para entender essa parte do método Update.

/*

  • To change this license header, choose License Headers in Project Properties.
  • To change this template file, choose Tools | Templates
  • and open the template in the editor.
    */
    package Banco;

import java.beans.PropertyChangeListener;
import java.beans.PropertyChangeSupport;
import java.io.Serializable;
import java.sql.PreparedStatement;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
import javax.persistence.Transient;

/**
*

  • @author Hudson33
    */
    @Entity
    @Table(name = “ESTADOS”, catalog = “”, schema = “HIGOR”)
    @NamedQueries({
    @NamedQuery(name = “Estados.findAll”, query = “SELECT e FROM Estados e”),
    @NamedQuery(name = “Estados.findById”, query = “SELECT e FROM Estados e WHERE e.id = :id”),
    @NamedQuery(name = “Estados.findByNomeDoEstado”, query = “SELECT e FROM Estados e WHERE e.nomeDoEstado = :nomeDoEstado”),
    @NamedQuery(name = “Estados.findBySiglaDoEstado”, query = “SELECT e FROM Estados e WHERE e.siglaDoEstado = :siglaDoEstado”)})
    public class Estados implements Serializable {
    @Transient
    private PropertyChangeSupport changeSupport = new PropertyChangeSupport(this);

    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Basic(optional = false)
    @Column(name = “ID”)
    private Integer id;
    @Column(name = “NOME_DO_ESTADO”)
    private String nomeDoEstado;
    @Column(name = “SIGLA_DO_ESTADO”)
    private String siglaDoEstado;

    public Estados() {
    }

    public Estados(Integer id) {
    this.id = id;
    }

    public Integer getId() {
    return id;
    }

    public void setId(Integer id) {
    Integer oldId = this.id;
    this.id = id;
    changeSupport.firePropertyChange(“id”, oldId, id);
    }

    public String getNomeDoEstado() {
    return nomeDoEstado;
    }

    public void setNomeDoEstado(String nomeDoEstado) {
    String oldNomeDoEstado = this.nomeDoEstado;
    this.nomeDoEstado = nomeDoEstado;
    changeSupport.firePropertyChange(“nomeDoEstado”, oldNomeDoEstado, nomeDoEstado);
    }

    public String getSiglaDoEstado() {
    return siglaDoEstado;
    }

    public void setSiglaDoEstado(String siglaDoEstado) {
    String oldSiglaDoEstado = this.siglaDoEstado;
    this.siglaDoEstado = siglaDoEstado;
    changeSupport.firePropertyChange(“siglaDoEstado”, oldSiglaDoEstado, siglaDoEstado);
    }

    @Override
    public int hashCode() {
    int hash = 0;
    hash += (id != null ? id.hashCode() : 0);
    return hash;
    }

    @Override
    public boolean equals(Object object) {
    // TODO: Warning - this method won’t work in the case the id fields are not set
    if (!(object instanceof Estados)) {
    return false;
    }
    Estados other = (Estados) object;
    if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) {
    return false;
    }
    return true;
    }

    @Override
    public String toString() {
    return “Banco.Estados[ id=” + id + " ]";
    }

    public void addPropertyChangeListener(PropertyChangeListener listener) {
    changeSupport.addPropertyChangeListener(listener);
    }

    public void removePropertyChangeListener(PropertyChangeListener listener) {
    changeSupport.removePropertyChangeListener(listener);
    }

}

package Banco;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;

public class Conectar {
public Statement stm;//responsável por preparar e realizar pesquisas no banco de dados
public ResultSet rs;//responsável por amazenar o resultado de uma pesquisa passada para o Statement
private String driver = “apache_derby_net”;//responsável por identificar o serviço de banco de dados
private String caminho = “jdbc:derby://localhost:1527/Higor”;//responsável por setar o local do banco de dados
private String usuario = “Higor”;
private String senha = “deliciacara15”;
public Connection conn; // responsável por realizar a conexão com o banco de dados

public void conexao()
{//método responsável por realizar a conexão com o banco.
    try {//tentativa inicial
        System.setProperty("jdbc.Drivers", driver);//seta a propriedade do driver de conexão
        conn = DriverManager.getConnection(caminho, usuario, senha);//realiza a conexão com o banco de dados.
        
        JOptionPane.showMessageDialog(null, "Conectado com sucesso.");
    } catch (SQLException ex) {//se não der certo... \/
        JOptionPane.showMessageDialog(null, "Erro de conexão."
        +"\nErro:"+ex.getMessage());
    }
}

public void executaSQL(String sql)
{
    try {
        stm = conn.createStatement(rs.TYPE_SCROLL_INSENSITIVE,
                rs.CONCUR_READ_ONLY);
        rs = stm.executeQuery(sql);
    } catch (SQLException ex) {
        Logger.getLogger(Conectar.class.getName()).log(Level.SEVERE, null, ex);
    }
}

public void desconecta()
{//método para fechar a conexão com o banco de dados
    try {
        conn.close();//fecha a conexao
        JOptionPane.showMessageDialog(null, "Conexão fechada com sucesso!");
    } catch (SQLException ex) {
        Logger.getLogger(Conectar.class.getName()).log(Level.SEVERE, null, ex);
        JOptionPane.showMessageDialog(null, "Erro ao fechar a conexão."
                + "\nErro:"+ex.getMessage());
    }
}

}

Na classe do JFrame, onde tem a tabela, como você mesmo disse, já tenho meus dados preenchidos, só falta eu programar a tabela para quando ela for alterada, o componente do BD também for.