Boa Noite.
Estou com um problema, fiz um botão de alterar,alterei o salvar para quando for acionado o botão de alterar mudasse de função, ate ai ok, o problema que ele não altera os dados, da a mensagem que foi alterado, e não da erro nenhum, se alguém puder me ajudar agradeço.
Botão altera, não esta gravando
16 Respostas
Códigos
Para chamar o a interface.
// variavel para diferenciar o salvar do alterar
//pega os dados do banco
int linha = this.jtAcessorios.getSelectedRow();
try {
int codigoProduto = (int) this.jtAcessorios.getValueAt(linha, 0);
//recupera os dados do banco
modelProduto = controllerProduto.retornarProdutoController(codigoProduto);
// joga os dados na interface
buscar.setVisible(true);
buscar.pack();
buscar.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
buscar.jtfCodigo.setText(String.valueOf(modelProduto.getCodigo()));
buscar.jtfNome.setText(String.valueOf(modelProduto.getNome()));
buscar.jcbUnidadeEspe.setSelectedItem(String.valueOf(modelProduto.getUnidadeespecifica()));
buscar.jtfCodigobarra.setText(String.valueOf(modelProduto.getCodigobarro()));
buscar.jtfDescricao.setText(String.valueOf(modelProduto.getDescricao()));
buscar.jtfQuantInicial.setText(String.valueOf(modelProduto.getQuantidade()));
buscar.jtfPrecoinicial.setText(String.valueOf(modelProduto.getPrecoinicial()));
buscar.jtfPrecoestoque.setText(String.valueOf(modelProduto.getPrecoestoque()));
buscar.jtfPrecoVendas.setText(String.valueOf(modelProduto.getPrecovenda()));
buscar.jcbCor.setSelectedItem(String.valueOf(modelProduto.getCor()));
buscar.jcbFornecedor.setSelectedItem(String.valueOf(modelProduto.getFornecedor()));
//recupera a imagem
String caminho = modelProduto.getFoto(); //foto é o nome da coluna no banco de dados
ImageIcon i = new ImageIcon(new ImageIcon(caminho).getImage().getScaledInstance(buscar.lblImagem.getWidth(), buscar.lblImagem.getHeight(), Image.SCALE_DEFAULT));
buscar.lblImagem.setIcon(i);// Nesse de cima ele redimensiona e nessa linha ele seta o campo no jLabel
} catch (Exception e) {
JOptionPane.showMessageDialog(this, "Código inválido ou nenhum produto selecionado! ", "AVISO", JOptionPane.ERROR_MESSAGE);
}
}
para salvar…
mod.setNome(this.jtfNome.getText());
mod.setUnidadeespecifica((String) this.jcbUnidadeEspe.getSelectedItem()); // converteu com o metodo new de string para bigdecimal
mod.setDescricao(this.jtfDescricao.getText());
mod.setCodigobarro(this.jtfCodigobarra.getText()); // converteu string para int
mod.setPrecoestoque(new BigDecimal(this.jtfPrecoestoque.getText()));
mod.setPrecoinicial(new BigDecimal(this.jtfPrecoinicial.getText()));
mod.setPrecovenda(new BigDecimal(this.jtfPrecoVendas.getText()));
mod.setCor((String) this.jcbCor.getSelectedItem());
mod.setQuantidade(Integer.parseInt(this.jtfQuantInicial.getText()));
//Salvar a foto
mod.setFoto(jTcaminho.getText());
if (cod.alterarProdutoDAOController(mod)) {
JOptionPane.showMessageDialog(this, "Produto alterado com sucesso!", "SUCESSO", JOptionPane.INFORMATION_MESSAGE);
ViewProdutosCadastro buscar = (ViewProdutosCadastro) parent;
buscar.carregarProdutos();
this.dispose();
} else {
//quando o produto estiver cadasto vai dar a mensagem e apagar tudo
JOptionPane.showMessageDialog(this, "Erro a alterar o produto!", "ERRO", JOptionPane.ERROR_MESSAGE); // MENSAGEM PADRÃO.
jtfNome.setText("");
jcbUnidadeEspe.setSelectedItem("");
jtfDescricao.setText("");
jtfCodigobarra.setText("");
jtfPrecoestoque.setText("");
jtfPrecoinicial.setText("");
jtfPrecoVendas.setText("");
jcbCor.setSelectedItem("");
jtfQuantInicial.setText("");
lblImagem.setText("");
}
}
no DAO esta assim…
public boolean alterarProdutoDAO(ModelProduto pModelProduto) {
try {
this.conectar();
return this.executarUpdateDeleteSQL(
"UPDATE tbl_acessorios SET "
+ "ace_nome = '" + pModelProduto.getNome() + "',"
+ "ace_unidade_especifica = '" + pModelProduto.getUnidadeespecifica() + "',"
+ "ace_descricao = '" + pModelProduto.getDescricao() + "',"
+ "ace_codigo_barra = '" + pModelProduto.getCodigobarro() + "',"
+ "ace_preco_estoque = '" + pModelProduto.getPrecoestoque() + "',"
+ "ace_preco_venda = '" + pModelProduto.getPrecovenda() + "',"
+ "ace_preco_inicial = '" + pModelProduto.getPrecoinicial() + "',"
+ "ace_cor = '" + pModelProduto.getCor() + "',"
+ "ace_quantidade = '" + pModelProduto.getQuantidade() + "',"
+ "ace_foto = '" + pModelProduto.getFoto() + "'"
+ " WHERE ace_id = '"+pModelProduto.getCodigo()+"'");
} catch (Exception e) {
e.printStackTrace();
return false;
} finally {
this.fecharConexao();
}
}
}
Por que me parece que não se trata do mesmo método?
eu tenho declarado global darlan.
model.ModelProduto mod = new ModelProduto();
ControllerProduto cod = new ControllerProduto();
private ViewProdutosCadastro parent;
Engraçado que aparece a mensagem de alterado com sucesso, mais não altera e nem acusa nenhum erro.
Tentou debugar e ver por onde passa, onde vai e por que aparece a mensagem?
O darlan como estou aprendendo sozinho, vou aprender fazer debug… ai vejo o que deu.
Como o Darlan já comentou, você postou o método alterarProdutoDAO
Mas no seu código você está chamando o método alterarProdutoDAOController
Então posta o código do método alterarProdutoDAOController
sim por que ele… por que ele chama o Controller… assim como estou assistindo uns videos. estou seguindo passo a passo,com a modificações. no controller esta assim.
public boolean alterarProdutoDAOController(ModelProduto pModelProduto){
return this.daoProduto.alterarProdutoDAO(pModelProduto);
E o método executarUpdateDeleteSQL?
Por que está usando Statement e não PreparedStatement?
Então… é que estou seguindo um rapaz do vídeo. ele passa os métodos, mais não sei estas outras alternativas.
Como seria este código?
Se está seguindo algum tutorial, faça como está no tutorial.
Agora, não temos como adivinhar. Veja que você posta partes de código, pouco a pouco e nem se dá conta que deixa muitas informações faltando.
Meu caro darlan, estou aqui pedindo ajuda, estou postando os códigos que vcs estão pedido, lógico que vc esta escrevendo no tópico por que por que quer ajudar, porém não e nada obrigado, se estou pedido ajuda, e por que fiz conforme o tutorial e não esta dando certo.
Estou aqui no fórum não é por que sou um programador, estou aqui por que acho interessante esta área e estou aqui buscando conhecimento, agora se te incomoda a ajudar por favor, não precisa ficar respondendo o pessoal aqui cara … obrigado pela suposta ajuda.
Posta o código da sua tela, do seu Controller e do seu DAO, de forma que seja possível ver onde cada parte troca mensagens com a outra.
Não, não me incomoda ajudar. O problema é que se você quer ficar na posição de vítima e coitadinho, vai fundo.
Agora, se realmente quer ajuda, poste os códigos. Ninguém consegue adivinhar quais foram as coisas que você fez.
Menos reclamação e mais ação.
coitadinho… amigo errou a pessoa …mais valeu.
Staroski… valeu vou fazer assim, este final de semana, vou refazer tutorial, e analisar tb os processo para entender, acabou que acabei travando discussão mesquinha aqui no fórum,que não e criando para isto, é que é a segunda fez que este rapaz responde assim, mais enfim, tem pessoas que gosta de ajudar aqui… qualquer coisa volto aqui 