Não consigo alterar nem excluir no BD

4 respostas
C

Ola pessoal…
Bem sou novo aqui no forum e tb em Java e to precisando da ajuda de vcs. To estudando pra poder fazer meu projeto final e to com um problema que é o seguinte, to acesando o BD to gravando nele numa bo so que na hora de alterar ou excluir nao esta funcionando…

import java.sql.Connection;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;

import modelo.Contato;

import conexao.ConnectionFactory;

import java.util.ArrayList;
import java.util.List;

public class ContatoDAO {

// a conexão com o banco de dados
 private Connection connection;

 public ContatoDAO() throws SQLException {
 this.connection = ConnectionFactory.getConnection();
 }

 public void adiciona(Contato contato) throws SQLException {

 // prepared statement para inserção
 String sql = "insert into contatos (nome,email,endereco) values (?,?,?)";
 PreparedStatement stmt = connection.prepareStatement(sql);

 // seta os valores
 stmt.setString(1,contato.getNome());
 stmt.setString(2,contato.getEmail());
 stmt.setString(3,contato.getEndereco());

 // executa
 stmt.execute();
 stmt.close();
 }

public List<Contato> getLista() throws SQLException{
	PreparedStatement stmt = this.connection.prepareStatement("select * from contatos");
	ResultSet rs = stmt.executeQuery();	
	
	List <Contato> contatos = new ArrayList<Contato>();
	
	while (rs.next()){
		Contato contato = new Contato();
		contato.setNome(rs.getString("nome"));
		contato.setEmail(rs.getString("email"));
		contato.setEndereco(rs.getString("endereco"));
		
		contatos.add(contato);
		
	}
	rs.close();
	stmt.close();
	
	return contatos;
}

public void altera(Contato contato) throws SQLException{

PreparedStatement stmt = this.connection.prepareStatement("update" + "contatos set nome=Carlos,  email=?,  endereco=?, where id=1");
	stmt.setString(1, contato.getNome());
	stmt.setString(2, contato.getEmail());
	stmt.setString(3, contato.getEndereco());
	stmt.setLong(4, contato.getId());
	stmt.execute();
	stmt.close();
	}
public void remove(Contato contato) throws SQLException {

PreparedStatement stmt = this.connection.prepareStatement(delete from contatos where id=?);

stmt.setLong(1, contato.getId());

stmt.execute();

stmt.close();

}

}

ele me mostra os arquivos que inclui mas não altera nem exclui…agradeço a ajuda.

4 Respostas

Jose111

Troque o “Carlos” e o “1” por pontos de interrogação.

PreparedStatement stmt = this.connection.prepareStatement("update" + "contatos set nome=Carlos, email=?, endereco=?, where id=1");

No método de deletar o registro vc tem certeza que o Id é um long? pq se ele for um int acredito que ele não ira conseguir comparar.

stmt.setLong(1, contato.getId());
C

Eu fiz a troca pela interrogação, e o id é um long porem quando mando executar esta classe ele me mostra a lista do que tem cadastrado, mas nao altera nem exclui nada…è preciso chamar esse metodo em outra classe para que ele me permita fazer a alteração???
Agradeço a ajuda

K

Tente alterar o método altera()… tente assim:

public void altera(Contato contato) throws SQLException{

PreparedStatement stmt = this.connection.prepareStatement("update contatos set nome=?, email=?, endereco=? where id=?");
stmt.setString(1, contato.getNome());
stmt.setString(2, contato.getEmail());
stmt.setString(3, contato.getEndereco());
stmt.setLong(4, contato.getId());
stmt.execute();
stmt.close();
}

Se possível, cole aqui o printStrackTrace da exception que está ocorrendo que fica mais fácil saber o que está acontecendo!

PS: O seu contato.id é do tipo Long mesmo?
Se for do tipo inteiro tem que alterar tb:

stmt.setInt(4, contato.getId());

[]'s

C

Galera eu pedi ajuda ao pessoal de java que eu conheço aqui e aconteçe o seguinte…no comando stmt.execute, foi alterado para executeupdate, a partir dai resolveu funcionar…agradeço a ajuda de todos ai…obrigado

Criado 10 de julho de 2009
Ultima resposta 10 de jul. de 2009
Respostas 4
Participantes 3