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

2 respostas
java
M

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

2 Respostas

D

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();
}
M

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 <a href="http://javax.persistence.Id">javax.persistence.Id</a>;

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 <a href="http://e.id">e.id</a> = :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)
    
    <a class="mention" href="/u/basic">@Basic</a>(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) {
    
    <a href="http://this.id">this.id</a> = id;
    
    }
    
    public Integer getId() {
    
    return id;
    
    }
    
    public void setId(Integer id) {
    
    Integer oldId = <a href="http://this.id">this.id</a>;
    
    <a href="http://this.id">this.id</a> = 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);
    
    }
    
    <a class="mention" href="/u/override">@Override</a>
    
    public int hashCode() {
    
    int hash = 0;
    
    hash += (id != null ? id.hashCode() : 0);
    
    return hash;
    
    }
    
    <a class="mention" href="/u/override">@Override</a>
    
    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 ((<a href="http://this.id">this.id</a> == null && <a href="http://other.id">other.id</a> != null) || (<a href="http://this.id">this.id</a> != null && !this.id.equals(<a href="http://other.id">other.id</a>))) {
    
    return false;
    
    }
    
    return true;
    
    }
    
    <a class="mention" href="/u/override">@Override</a>
    
    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.

Criado 31 de agosto de 2016
Ultima resposta 1 de set. de 2016
Respostas 2
Participantes 2