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();
}
}
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.
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")));
//dados.add(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();
}
Ricardo,
No formato que está consigo excluir a linha selecionada no banco de dados?
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.
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
*/
}
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.
Mas eu já respondi: é só você fazer um DELETE
na tabela passando o id_requisicao
do objeto selecionado.