Duvidas com o teste do método Remove

Pessoal estou precisando de uma ajuda…

Na hora de testar meu método Remove, está dando nullPointerException…

O que está me deixando na dúvida, é que para pesquisar e imprimir o contato do meu banco, a pesquisa é feita pelo ID do contato, tudo ocorre perfeitamente, mais na hora de excluir ele da erro.

Vou colocar o código aqui do teste e do método remove

Teste

import java.sql.SQLException;
import java.util.List;
import java.util.Scanner;

import br.com.camilo.dao.ContatoDAO;
import br.com.camilo.jdbc.modelo.Contato;

public class TestaRemove {
	public static void main(String[] args) throws SQLException {
		String id;
		int i = 0;
		int idConvertido = 0;
		boolean testaValor = true;

		Scanner teclado = new Scanner(System.in);

		while (testaValor) {
			System.out.println("Entre com o Id do contato a ser removido: ");
			id = teclado.nextLine();
			try {
				idConvertido = Integer.valueOf(id);
				testaValor = false;
			} catch (NumberFormatException e) {
				testaValor = true;
				System.out.println("Entre com um número inteiro!!\n");
			}
		}

		
		ContatoDAO dao = new ContatoDAO();

		
		List<Contato> contatos = dao.getLista();
		if (idConvertido > contatos.size()) {
			System.out.println("Id inexistente!");
		} else {
		
			for (Contato contato : contatos) {
				i++;

				if (idConvertido == i) {
					
					dao.remove(contato);

					System.out.println("Contato removido com sucesso!");

				}

			}

		}

	}

}

Metodo Remove

public void remove(Contato contato) throws SQLException {
		PreparedStatement stmt = connection
				.prepareStatement("delete from contatos where id=?");
		stmt.setLong(1, contato.getId());
		stmt.execute();
		stmt.close();

	}

Aguardo a ajuda e obrigado.

Coloca o StackTrace pra gente ver.

Segue o que apareceu n o console:

Exception in thread “main” java.lang.NullPointerException
at br.com.camilo.dao.ContatoDAO.remove(ContatoDAO.java:76)
at br.com.camilo.jdbc.teste.TestaRemove.main(TestaRemove.java:45)

Abaixo esta a parte do ContatoDAO que deu problema:

public void remove(Contato contato) throws SQLException {
		PreparedStatement stmt = connection
				.prepareStatement("delete from contatos where id=?");
		stmt.setLong(1, contato.getId()); //Aqui é a linha 76 q está dando problema
		stmt.execute();
		stmt.close();

	}

teu id está null provavelmente
onde que vc popula esse objeto contato?
e onde vc seta o id?

O objeto contato é populado no metodo adiciona do contatoDAO.

O ID é setado automaticamente pelo banco de dados.

O problema é que quando vou fazer uma pesquisa para imprimir, estou utilizando o mesmo jeito de pesquisa e não da erro, consigo encontrar o contato e imprimir normalmente. Porém na hora de excluir ele dá o erro…

ta osso…

Já pensou em usar o depurador e ver que variável está nula?

Vou usar pra ver.

Posto o resultado aqui.

Valew

Pessoal, consegui contornar o problema, porém, fiquei mais em dúvida…

Meu ID está como null para todos os meus contatos, porém no meu banco de dados, ele está como preenchido automaticamente e ao listar meus contatos, estou utilizando o SQLyog, e aparece tudo preenchido, inclusive meu ID…

Consigo fazer a pesquisa pelo ID, dai imprimi todos os dados do contato e coloquei uma rotina de confirmação para excluir e fiz a exclusão apartir do nome do contato, com o contato.getName(), aon inves de fazer contato.getId()…

Mesmo assim, ficou a duvida…

Se alguem puder me ajudar a resolver isto, para aprendizado e para fazer da outra forma…

Agradeço