Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Diego Macêdo

Erro ao tentar atualizar dados no postgre

Recommended Posts

Amigos,

 

estou tentando atualizar os dados, mas o comando não está sendo executado corretamente.

 

Meu BD está assim

BD - Agenda

Tabela - Contatos

Colunas:

id (integer)

nome (text)

telefones (text)

celular (text)

 

Ação realizada pelo botão "Salvar":

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

  // verificar se os campos foram preenchidos

	  if (jTextFieldNome.getText().length() < 2){

		  jLabelMensagemErro.setText("Informe o nome do contato!");

	  } else if (jTextFieldTelefone.getText().length() < 3){

		  jLabelMensagemErro.setText("Informe o telefone do contato!");

	  } else {

		  Contato c = new Contato();

		  c.setNome(  jTextFieldNome.getText() );

		  c.setTelefones( jTextFieldTelefone.getText() );

		  c.setCelular( jTextFieldCelular.getText() );

		  GerenciadorContatos.atualizarContato(c);

  

		  // enviar mensagem para o usuário

		  JOptionPane.showMessageDialog(null, "Contato atualizado com sucesso!");

		  

		  // limpar os campos

		  jTextFieldNome.setText("");

		  jTextFieldTelefone.setText("");

		  jTextFieldCelular.setText("");

		  jTextFieldId.setText("");

	  }

  }

Método para atualizar no BD:

public void atualizar(Contato objeto) {

		try {
			String sql = "UPDATE contatos SET ";	
			sql += "nome = ?, ";
			sql += "telefones = ?, ";
						sql += "celular = ? ";
			sql += "WHERE id = ?";

			PreparedStatement sta = conexao.prepareStatement(sql);
			sta.setString(1, objeto.getNome());
			sta.setString(2, objeto.getTelefones());
						sta.setString(3, objeto.getCelular());
			sta.setInt(4, objeto.getId());
											   
			int quantidade = sta.executeUpdate();
						System.out.println(sql);
			System.out.println("quantidade de registros atualizados: " + quantidade);
		} catch (SQLException e){
			System.err.println("Erro ao tentar atualizar contato: \n" + e.getMessage());
		} catch (Exception e){
			System.err.println("Erro ao tentar atualizar contato: \n" + e.getMessage());
		}
	}

Sempre que atualizo os dados e boto pra salvar, ele executa o SQL e retorna uma mensagem:

"quantidade de registro atualizados: 0"

 

Ou seja, não está atualizando os dados. E realmente não está.

 

Alguém me dá uma ajudinha aí, pois não to enxergando o erro?

 

Abraços!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tem algo estranho nesse seu código. O método responsável por salvar é o public void atualizar(Contato objeto). No evento do botão salvar você está chamando o método de classe (estático) GerenciadorContatos.atualizarContato©;.

 

Supondo que no evento do botão você esteja chamando o método public void atualizar(Contato objeto), que é o que existe; esse update não funcionará jamais.

Contato c = new Contato();
c.setNome(  jTextFieldNome.getText() );
c.setTelefones( jTextFieldTelefone.getText() );
c.setCelular( jTextFieldCelular.getText() );
GerenciadorContatos.atualizarContato(c);
Em momento algum você definiu o valor do atributo id. Supondo que você define o valor padrão para esse atributo como 0, ele sempre tentará atualizar o registro cujo código é 0. Você precisa definir o valor do campo id.

Contato c = new Contato();
c.setId(codigo);
c.setNome(  jTextFieldNome.getText() );
c.setTelefones( jTextFieldTelefone.getText() );
c.setCelular( jTextFieldCelular.getText() );
GerenciadorContatos.atualizarContato(c);

Compartilhar este post


Link para o post
Compartilhar em outros sites

É verdade amigo, pela madrugada eu consegui resolver o problema, depois de horas olhando o código. Acho que era o sono atrapalhando. kkkkkkk

 

Segue abaixo o código resolvido do action salvar:

 

private void btnSalvarActionPerformed(java.awt.event.ActionEvent evt) {										  
// verificar se os campos foram preenchidos
	if (jTextFieldNome.getText().length() < 2){
		jLabelMensagemErro.setText("Informe o nome do contato!");
	} else if (jTextFieldTelefone.getText().length() < 3){
		jLabelMensagemErro.setText("Informe o telefone do contato!");
	} else {
		Contato c = new Contato();
		c.setNome(  jTextFieldNome.getText() );
		c.setTelefones( jTextFieldTelefone.getText() );
		c.setCelular( jTextFieldCelular.getText() );
		int id = Integer.parseInt(jTextFieldId.getText());
		c.setId(id);
		GerenciadorContatos.atualizarContato(c);

		// enviar mensagem para o usuário
		JOptionPane.showMessageDialog(null, "Contato atualizado com sucesso!");
		
		// limpar os campos
		jTextFieldNome.setText("");
		jTextFieldTelefone.setText("");
		jTextFieldCelular.setText("");
		jTextFieldId.setText("");
	}
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.