Duvida codigo update e delete

6 respostas
MAFIA_Pao

Bom dia a todos, estou seguindo a apostila web fj21, estou na parte de fazer update e delete.

Poderia me ajudar com o codigo de update e delete, pois no arquivo DAO eu fiz assim, porem nao estou conseguindo fazer o main para poder executar as query's. :oops:

Arquivo ContatoDAO.java
public void altera(Contato contato){
		
		String sql = "update contatos set nome=?, email=?, endereco=?, dataNascimento=? where id=?";
		
		try {
			PreparedStatement stmt = conn.prepareStatement(sql);
			stmt.setString(1, contato.getNome());
			stmt.setString(2, contato.getEmail());
			stmt.setString(3, contato.getEndereco());
			stmt.setDate(4, new Date(contato.getDataNascimento().getTimeInMillis()));
			stmt.setLong(5, contato.getId());
		 
			stmt.execute();
			stmt.close();
		 
		}//fim try
		catch (SQLException e) {
			throw new RuntimeException(e);
		}//fim catch
	}//fim altera

public void remove(Contato contato){
		
		try {
			PreparedStatement stmt = conn.prepareStatement("delete from contatos where id=?");
			stmt.setLong(1, contato.getId());
			stmt.execute();
			stmt.close();
		}//fim try
		catch (SQLException e) {
			throw new RuntimeException(e);
		}//fim catch
	}//fim deletar
}

Na hora de alterar algum dado, eu segui mais ou menos o codigo de adicionar um contato no banco, porem sem sucesso.

6 Respostas

drsmachado

Qual o erro?

MAFIA_Pao

Ele nao esta alterando, ele esta adicionando um outro contato.

leocantanhede

Ao invés de passar o um Contato, passe apenas o id, sugiro que troque o stmt.execute por stmt.executeUpdate

public void altera(int id)  {
.
.
.
stmt.executeUpdate();
stmt.close();
.
.
.
}
drsmachado

leocantanhede:
Ao invés de passar o um Contato, passe apenas o id, sugiro que troque o stmt.execute por stmt.executeUpdate

public void altera(int id)  {
.
.
.
stmt.executeUpdate();
stmt.close();
.
.
.
}


1 - O código é update, ou seja, vai executar uma atualização.
2 - É um preparedStatement, deve ser feito com execute.

Por inserir outro contato, o problema está na chamada do método, você não deve estar chamando o alterar.

E

Posta o jsp. Deve ser a chamada do método mesmo.

MAFIA_Pao

Amigos, eu achei meu erro, eu estava chamando o método errado, por isso nao fazia o update no banco.

segue o codigo do main

public class TestaAlterar {
	
	public static void main(String[] args){
		
		ContatoDAO dao = new ContatoDAO();
		
		Contato contato = new Contato();
		contato.setId(3);
		contato.setNome("teste");
		contato.setEmail("[email removido]");
		contato.setEndereco("Rua dos doido, 1357");
		contato.setDataNascimento(Calendar.getInstance());
		
		dao.altera(contato);// o erro estava aqui, pois estava dao.adiciona antes, dae mudei para altera
		System.out.println("Alterado!");
		System.out.println("Conexão Fechada!");
	}

}
agora o codigo de deletar
public class TestaRemover {
	
	public static void main(String[] args){
		
		ContatoDAO dao = new ContatoDAO();
		
		Contato contato = new Contato();
		
		contato.setId(6);// id da posicao no banco
		contato.setDataNascimento(Calendar.getInstance());
		
		dao.remove(contato);
		System.out.println("Removido!");
		System.out.println("Conexão Fechada!");
	}

}

Lembrando que o esquema do arquivo DAO esta no primeiro post.
Se alguém quiser ajudar com alguma dica, fica a vontade, pois existe várias maneiras de fazer isso. Obrigado.

Criado 2 de fevereiro de 2012
Ultima resposta 2 de fev. de 2012
Respostas 6
Participantes 4