Excluir Linha do Jtable no Banco de Dados

7 respostas
java
F

Boa tarde, Pessoal
Gostaria de um auxilio do forum para meu problema abaixo:

Tenho uma jtable e gostaria de excluir a linha no banco de dados quando remover uma linha da tabela, a remoção na tabela funciona, mas no banco de dados os itens ainda permanecem, sendo a remoção efetuada via jbutton.

Codigo:

private void jButton_Remover_ItensActionPerformed(java.awt.event.ActionEvent evt) {

conexaoTabelaItens.conexao();

int linhaSelecionada = jTable_ItensAdd.getSelectedRow();

if (jTable_ItensAdd.getSelectedRow() != -1) {

ModeloTabela ModeloTb = (ModeloTabela) jTable_ItensAdd.getModel();
ModeloTb.removeRow(jTable_ItensAdd.getSelectedRow());
        int quantosRegistros = jTable_ItensAdd.getRowCount();

        if (quantosRegistros > linhaSelecionada) {
            jTable_ItensAdd.setRowSelectionInterval(linhaSelecionada, linhaSelecionada);

        } else if (jTable_ItensAdd.getRowCount() > 0) {
            jTable_ItensAdd.setRowSelectionInterval(linhaSelecionada - 1, linhaSelecionada - 1);
        }

    } else {
        JOptionPane.showMessageDialog(null, "Por Gentileza Selecione uma linha");
    }

    
    
}

public class ModeloTabela extends AbstractTableModel{

private ArrayList linhas = null;
private String[] colunas = null;

public ModeloTabela(ArrayList lin, String [] col){

setLinhas(lin);
setColunas(col);

        }
public ArrayList getLinhas(){
return linhas;
}

public void setLinhas(ArrayList dados){

linhas = dados;

}

public String[] getColunas(){

return colunas;

}

public void setColunas(String[] nomes){

colunas = nomes;
}
public int getColumnCount(){
    return colunas.length;
}

public int getRowCount(){
    return linhas.size();
}

public String getColumnName(int numCol){
    return colunas[numCol];
}

public Object getValueAt(int numLin, int numCol){
    Object[] linha = (Object[]) getLinhas().get(numLin);
    return linha[numCol];
}

public void removeRow(int  linha) {
    this.linhas.remove(linha);
    fireTableDataChanged();
   
}

}

7 Respostas

S

Porque você tem uma lista de Object[] ?
Muda isso aí para uma lista de uma classe que representa o que você tem no banco de dados.
Aí na hora de excluir você remove o objeto do ArrayList e faz o delete dele no banco.

F
Uso para preencher a Jtable:

//METODO PARA PREENCHER A TABELA DE ITENS REQUISITADOS

public void preencherTabelaItens(String Sql) {

ArrayList dados = new ArrayList();

String[] Colunas = new String[]{Quantidade, " Unidade", Descrição do Material, Numero Requisição};

conexaoTabelaItens.executaSQL(Sql);

try {

conexaoTabelaItens.rs.first();
do {
            dados.add(new Object[]{conexaoTabelaItens.rs.getInt("quantidade_produto"), conexaoTabelaItens.rs.getString("unidademedida"), conexaoTabelaItens.rs.getString("descricao"), conexaoTabelaItens.rs.getInt("id_requisicao")});
            // jtextfield recebe o idrequisição, gerado ao adicionar um item na tabela de itens requisição - Funcionando
            jTextField_numero_rq.setText(String.valueOf(conexaoTabelaItens.rs.getInt("id_requisicao")));
<a href="//dados.add" rel="noopener nofollow ugc">//dados.add</a>(new Object[]{ conecta.rs.getString(“descricao”), conecta.rs.getString(“unidademedida”), conecta.rs.getString(“quantidadedisponivel”)});

} while (conexaoTabelaItens.rs.next());

} catch (SQLException ex) {

JOptionPane.showMessageDialog(null, “Erro ao Preencher Tabela de Itens Requisição! Erro:” + ex);

}

// Monta Tabela com a quantidade de Colunas informadas - Tabela de Itens disponiveis no Estoque

ModeloTabela modelo = new ModeloTabela(dados, Colunas);

jTable_ItensAdd.setModel(modelo);

jTable_ItensAdd.getColumnModel().getColumn(0).setPreferredWidth(170);

jTable_ItensAdd.getColumnModel().getColumn(0).setResizable(false);

jTable_ItensAdd.getColumnModel().getColumn(1).setPreferredWidth(140);

jTable_ItensAdd.getColumnModel().getColumn(1).setResizable(false);

jTable_ItensAdd.getColumnModel().getColumn(2).setPreferredWidth(550);

jTable_ItensAdd.getColumnModel().getColumn(2).setResizable(false);

jTable_ItensAdd.getColumnModel().getColumn(3).setPreferredWidth(200);

jTable_ItensAdd.getColumnModel().getColumn(3).setResizable(false);

//        //jTable_ItensAdd.getColumnModel().getColumn(4).setPreferredWidth(151);

//jTable_ItensAdd.getColumnModel().getColumn(4).setResizable(false);

jTable_ItensAdd.getTableHeader().setReorderingAllowed(false);

jTable_ItensAdd.setAutoResizeMode(jTable_requisicao.AUTO_RESIZE_OFF);

jTable_ItensAdd.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
// Desconectando Banco de Dados da Conexão Tabelas Itens
    //conexaoTabelaItens.desconecta();
}
F

Ricardo,
No formato que está consigo excluir a linha selecionada no banco de dados?

S

Consegue, é só você fazer um delete na tabela passando esse id_requisicao do objeto selecionado.
Mas ainda acho que você deveria programar orientado a objetos e ter pelo menos uma classe ItemRequisicao com esses atributos que você está lendo do banco.

F

eu criei uma classe requisição, e estou tentando aprender na raça!mas algumas coisas tenho dificuldade, vejo muito videos estou tentando melhorar, você sugere algum livro para que possa me qualificar, ou até mesmo um curso:

public class ModeloRequisicao {

private int id_solicitante;

private String nome_solicitante;

private String departamento;
private int id_produto;
private String nome_produto;
private int quantidade;
 private String unidademedida;
private String utilizacao;

private int id_Requisicao;
private String data_requisicao;
private String status;
private int valorproduto;


/**
 * @return the id_solicitante
 */
public int getId_solicitante() {
    return id_solicitante;
}

/**
 * @param id_solicitante the id_solicitante to set
 */
public void setId_solicitante(int id_solicitante) {
    this.id_solicitante = id_solicitante;
}

/**
 * @return the nome_solicitante
 */
public String getNome_solicitante() {
    return nome_solicitante;
}

/**
 * @param nome_solicitante the nome_solicitante to set
 */
public void setNome_solicitante(String nome_solicitante) {
    this.nome_solicitante = nome_solicitante;
}

/**
 * @return the departamento
 */
public String getDepartamento() {
    return departamento;
}

/**
 * @param departamento the departamento to set
 */
public void setDepartamento(String departamento) {
    this.departamento = departamento;
}

/**
 * @return the id_produto
 */
public int getId_produto() {
    return id_produto;
}

/**
 * @param id_produto the id_produto to set
 */
public void setId_produto(int id_produto) {
    this.id_produto = id_produto;
}

/**
 * @return the nome_produto
 */
public String getNome_produto() {
    return nome_produto;
}

/**
 * @param nome_produto the nome_produto to set
 */
public void setNome_produto(String nome_produto) {
    this.nome_produto = nome_produto;
}

/**
 * @return the quantidade
 */
public int getQuantidade() {
    return quantidade;
}

/**
 * @param quantidade the quantidade to set
 */
public void setQuantidade(int quantidade) {
    this.quantidade = quantidade;
}

/**
 * @return the unidademedida
 */
public String getUnidademedida() {
    return unidademedida;
}

/**
 * @param unidademedida the unidademedida to set
 */
public void setUnidademedida(String unidademedida) {
    this.unidademedida = unidademedida;
}

/**
 * @return the utilizacao
 */
public String getUtilizacao() {
    return utilizacao;
}

/**
 * @param utilizacao the utilizacao to set
 */
public void setUtilizacao(String utilizacao) {
    this.utilizacao = utilizacao;
}

/**
 * @return the id_Requisicao
 */
public int getId_Requisicao() {
    return id_Requisicao;
}

/**
 * @param id_Requisicao the id_Requisicao to set
 */
public void setId_Requisicao(int id_Requisicao) {
    this.id_Requisicao = id_Requisicao;
}

/**
 * @return the data_requisicao
 */
public String getData_requisicao() {
    return data_requisicao;
}

/**
 * @param data_requisicao the data_requisicao to set
 */
public void setData_requisicao(String data_requisicao) {
    this.data_requisicao = data_requisicao;
}

/**
 * @return the status
 */
public String getStatus() {
    return status;
}

/**
 * @param status the status to set
 */
public void setStatus(String status) {
    this.status = status;
}

/**
 * @return the valorproduto
 */
public int getValorproduto() {
    return valorproduto;
}

/**
 * @param valorproduto the valorproduto to set
 */
public void setValorproduto(int valorproduto) {
    this.valorproduto = valorproduto;
}

/**
 * @return the id_solicitante
 */

}

F

Boa tarde, Ricardo
Se puder me ajudar de como devo efetuar para apagar a linha selecionada posso até lhe pagar pela ajuda, já tentei diversas formas, e meu conhecimento não possibilita a solução do problema.

at.

S

Mas eu já respondi: é só você fazer um DELETE na tabela passando o id_requisicao do objeto selecionado.

Criado 28 de março de 2023
Ultima resposta 31 de mar. de 2023
Respostas 7
Participantes 2