Excluir e Alterando arquivo do BD atraves de uma JTable

Opa blz galera??

Minha duvida é a seginte, estou começando a programar agora em JAVA apenas 4 meses, carrego uma tabela de produtos do BD atraves de uma consulta separada por tipo que o usuario escolhe com ajuda de uma Combo, depois da lista carregada, o usuario escolhe o item desejado se ele aperta em excluir que o sistema exclua, mas se o usuário clicar em alterar ele carregar esse dados na janela ao lado.

Opa ia me esquecendo estou usando conexão JDBC.

Vlw pessoal!!

eaew ismael…

OBS.: Não copie e cole, tente entendê-lo, qualquer coisa pooosta ai que nois resolve…

vamos láh…

o negócio é o seguinte, primeiramente, voce deve ter uma classe encapsulada so para receber esses valores, e para serem repassados para outra classe naum é?

blz… eu faço assim, tenho a minha classe (ENCAPSULAMENTO) com as minhas variáveis PRIVATES, e dentro dela eu tenho os meus métodos de acesso.
os GETTERS and SETTERS.

e na minha classe principal, onde contém a tabela com os produtos listados, eu uso o seguinte jeito para se alterar:

[code]public void actionPerformed(ActionEvent evt) {
Object obj = evt.getSource();

	if (obj == btnAlterar){
		try {
			produtos.setCodProduto(((String) tabela1.getValueAt(tabela1.getSelectedRow(),0)));
			produtos.setNomeProduto((String)tabela1.getValueAt(tabela1.getSelectedRow(),1));
			produtos.setDescricaoProduto((String)tabela1.getValueAt(tabela1.getSelectedRow(),2));
			produtos.setQuantidade((String)tabela1.getValueAt(tabela1.getSelectedRow(),3));
			produtos.setTipoProduto((String)tabela1.getValueAt(tabela1.getSelectedRow(),4));
			produtos.setValorUnitario((String)tabela1.getValueAt(tabela1.getSelectedRow(),5));
			setVisible(false);
			new AlterarProduto(produtos);
		} catch ( java.lang.ArrayIndexOutOfBoundsException e) {
			JOptionPane.showMessageDialog(null,"Selecione um produto para alteração!");
			e.printStackTrace();
		}
	}[/code]

ai eu tenho uma interface para adicionar acoes ao botoes a serem clicados, e dentro eu tenho um TRY e CATCH para que se o usuario clicar em alterar
sem escolher uma linha (um produto para alteração), emiti uma mensagem na tela.

eu usei um método para listar os dados na tabela.

[code]public void listarTodos(){
ProdutosDAO operac = new ProdutosDAO();
ArrayList<Produtos> lista = operac.consultarTodos();

	Object []vec=null; 
	vec = new Object[6];

	for (int i=0; i&lt;lista.size(); i++){ 
		  vec[0]  = ((lista.get(i).getCodProduto()));
		  vec[1]  = ((lista.get(i).getNomeProduto()));
		  vec[2]  = ((lista.get(i).getDescricaoProduto()));
		  vec[3]  = ((lista.get(i).getQuantidade()));
		  vec[4]  = ((lista.get(i).getTipoProduto()));
		  vec[5]  = ((lista.get(i).getValorUnitario()));	
		  modelo.addRow(vec);
	}
}[/code]

e no meu primeiro bloco de codigos acima, eu usei:

code produtos.setCodProduto(((String) tabela1.getValueAt(tabela1.getSelectedRow(),0))); (…)[/code] onde o ZERO, é a posição do meu vetor, do meu método que está dentro da minha ARRAY LIST, e simplesmente quando ele clica em alterar, ele pega a linha selecionada, fecha a tela que esta aberta com a tabela de produtos, e manda pra um segundo construtor, que foi criado na minha outra classe para alteração de produtos, que por sinal recebe um objeto do tipo produto, que foi passado lah em cima, onde esta assim: new AlterarProduto(produtos); produtos é o objeto passado. ficando assim na outra classe:

[code]public class AlterarProduto extends JFrame implements ActionListener{

    String combo2 [] = {"","PERECÍVEL","NÃO-PERECÍVEL"};
JTextField campodescricaoProduto = new JTextField();
JTextField campoValorUnitario = new JTextField();
JTextField campoNomeProduto = new JTextField();
JTextField campoSalario = new JTextField();
JTextField campoIdProduto = new JTextField();
JSpinner spinnerQuantidade = new JSpinner();
JComboBox campoComboTipoProduto = new JComboBox(combo2);
JButton btnLimpar = new JButton ("Limpar");
JButton voltar = new JButton("Voltar");
JButton btnAtualizar = new JButton("Atualizar");
JButton btnVoltar = new JButton ("Ir p/ Tabela");
JButton caucular = new JButton ("Caucular");
JButton btnInicio = new JButton("Início");
JMenuItem sair = new JMenuItem("Sair");

public AlterarProduto(Produtos produtos){ //2º construtor
this();
campoIdProduto.setText(String.valueOf(produtos.getCodProduto()));
campoNomeProduto.setText(produtos.getNomeProduto());
campodescricaoProduto.setText(produtos.getDescricaoProduto());
campoComboTipoProduto.setSelectedItem(produtos.getTipoProduto());
spinnerQuantidade.setValue(Integer.parseInt(produtos.getQuantidade()));
campoValorUnitario.setText(produtos.getValorUnitario());
}
public AlterarProduto(){ // construtor principal

	super("Pedro Inácio  - Aluno de Sistemas de informações/4° SEMESTRE UNIDESC. Sistema de cadastros BRB");
	setSize(500,490);
	this.setResizable(false);
	setUndecorated(true);
	setDefaultCloseOperation(EXIT_ON_CLOSE);
	setDefaultLookAndFeelDecorated(isDefaultLookAndFeelDecorated());
	getRootPane().setWindowDecorationStyle(JRootPane.FILE_CHOOSER_DIALOG);

	JPanel principal= new JPanel();

         .....}

[/code]

e quando for executado, ele passa todos os elementos daquela linha selecionada para os campos da minha outra classe, para alteração. ai para alterar, ja é outra historia, ai voce faz o seguinte, voce reescreve mais uma ação para um botao atualizar na sua classe para alteração de produtos ficando assim:

[code]if (evt.getSource().equals(btnAtualizar)){
Produtos o = new Produtos();
o.setCodProduto(campoIdProduto.getText());
o.setNomeProduto(campoNomeProduto.getText());
o.setDescricaoProduto(campodescricaoProduto.getText());
o.setTipoProduto(String.valueOf(campoComboTipoProduto.getSelectedItem()));
o.setQuantidade(String.valueOf((spinnerQuantidade.getValue())));
o.setValorUnitario(campoValorUnitario.getText());

	 	ProdutosDAO op2 = new ProdutosDAO();
	 	op2.Alterar(o);
	 	
	 	setVisible(false);
	 	TabelaProdutos ol = new TabelaProdutos();
	 	ol.listarTodos();
	}[/code]

instancio um objeto da minha classe encapsulada, seto os valores á serem atualizados, e instancio outro objeto de uma classe que so contem métodos para alteração, consultas, exclusão, e repasso o parametro para o método que contem a QUERRY de atualização, dentro dessa minha classe.

blz…? qualquer coisa POSTA AI…Flowss…>

Atenção. NÃO USE DefaultTableModel, só vai te causar dor de cabeça e te obrigar a escrever códigos sujos que nem esse ai em cima.

Entenda como fazer um TableModel orientado a objeto seguindo o link da minha assinatura.