NullPointerException - Coluna Banco de dados

Galera, meu problema é o seguinte.
Eu to montando um programa que deverá implementar um Banco de Dados CRUD.
Porém, no meu método p/ remover um Cliente do BD, ocorre um NullPointerException .
De inicio eu pensei o NullPointer apontava para o meu atributo ID da minha classe Cliente, mas depois eu verifiquei que nao, o ID do meu Objeto nao estava nulo.
Em fim, em outro post a galera me ajudou a ver que o erro poderia estar na minha coluna ID do banco de dados.
Gostaria que vcs me ajudassem a reparar esse erro, pois ja estou com ele a uma semana e nao consigo arrumar.
Valeu a ajuda de todos.

Código - classe ClienteDAO

[code]package engenharia_de_software.Cliente;

import java.sql.Connection;
import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;

import engenharia_de_software.ConnectionFactory;

public class ClienteDAO {

private Connection con;
private int incrementadorID;

public ClienteDAO() {
	this.con = new ConnectionFactory().getConnection();
}

//////////////////////////////////////MÉTODO PARA ADICIONAR//////////////////////////////
public void adiciona(Cliente cliente) {
String sql = “insert into clientes (nome,telefone,endereco) values(?,?,?)”;
try {
PreparedStatement stmt = con.prepareStatement(sql);

		stmt.setString(1, cliente.getNome());
		stmt.setString(2, cliente.getTelefone());
		stmt.setString(3, cliente.getEndereco());
		

		stmt.execute();
		stmt.close();
	} catch (SQLException e) {
		throw new RuntimeException(e);
	}
}

//////////////////////////////////////MÉTODO PARA MOSTRAR//////////////////////////////
public List getList() {
try {
PreparedStatement stmt = this.con
.prepareStatement(“select*from clientes”);
ResultSet rs = stmt.executeQuery();
List clientes = new ArrayList();
while (rs.next()) {
Cliente cliente = new Cliente();
cliente.setId(rs.getLong(“id”));
cliente.setNome(rs.getString(“nome”));
cliente.setTelefone(rs.getString(“telefone”));
cliente.setEndereco(rs.getString(“endereco”));

			clientes.add(cliente);

		}
		rs.close();
		stmt.close();
		return clientes;

	} catch (SQLException e) {
		throw new RuntimeException(e);
	}
}

//////////////////////////////////////MÉTODO PARA REMOVER//////////////////////////////
public void remove(Cliente cliente){
try {
PreparedStatement stmt = con.prepareStatement(“delete from clientes where id=?”);
stmt.setLong(1, cliente.getId());
stmt.execute();
stmt.close();
} catch (SQLException e) {
throw new RuntimeException();
}

}

//////////////////////////////////////MÉTODO PARA ALTERAR//////////////////////////////
public void altera(Cliente cliente){
String sql =“update clientes set nome=?, telefone=?, endereco=? where id=?”;
try{
PreparedStatement stmt = con.prepareStatement(sql);

		stmt.setString(1, cliente.getNome());
		stmt.setString(2, cliente.getTelefone());
		stmt.setString(3, cliente.getEndereco());
		stmt.setLong(5, cliente.getId());

		stmt.execute();
		stmt.close();
		
	}catch (SQLException e){
		throw new RuntimeException();
	}
}

}
[/code]

Código - Classe Cliente

[code]package engenharia_de_software.Cliente;

public class Cliente {
private String nome, endereco, telefone;
private Long id;

public Long getId() {
	return id;
}

public void setId(Long id) {
	this.id = id;
}

public String getNome() {
	return nome;
}

public void setNome(String nome) {
	this.nome = nome;
}

public String getEndereco() {
	return endereco;
}

public void setEndereco(String endereco) {
	this.endereco = endereco;
}

public String getTelefone() {
	return telefone;
}

public void setTelefone(String telefone) {
	this.telefone = telefone;
}

}
[/code]

Classe Principal - Onde eu estava testando as funcionalidades CRUD

[code]package engenharia_de_software;

import java.util.List;

import engenharia_de_software.Cliente.Cliente;
import engenharia_de_software.Cliente.ClienteDAO;
import engenharia_de_software.Cliente.MetodosClient;

public class Principal {

public static void main (String args[]){
	
	Cliente c = new Cliente();
	ClienteDAO dao = new ClienteDAO();
	
	/*c.setNome("LUACS");
	c.setEndereco("SHA CJ 4 CH 72 LOTE R");
	c.setTelefone("3401-1956");
	dao.adiciona(c);*/
	
	
	
/*	MetodosClient m = new MetodosClient();
	m.listarClientes(c);*/
	
	List<Cliente> clientes = dao.getList();
	
	for (Cliente p : clientes){
		System.out.println("\nNome: "+p.getNome());
		System.out.println("Telefone: "+p.getTelefone());
		System.out.println("Endereço: "+p.getEndereco());
		System.out.println("ID: "+p.getId());
	}
	dao.remove(c);

	
	
	
	
	
}

}
[/code]

e por fim, o erro:

[quote]Exception in thread “main” java.lang.NullPointerException
at engenharia_de_software.Cliente.ClienteDAO.remove(ClienteDAO.java:71)
at engenharia_de_software.Principal.main(Principal.java:34)[/quote]

ah sim, antes que eu me esqueça,eu nao sei exatamente qual a posição do meu ID no Banco, sou meio leigo em banco ainda, + na criação do Banco, o ID foi o primeiro atributo a ser criado.

  • uma vez agradeço a ajuda de toda galera do forum.
    Valeu!

Você instanciou

Cliente c = new Cliente();

No “for” você criou um outro objeto “p”

  for (Cliente p : clientes){  
            System.out.println("\nNome: "+p.getNome());  
            System.out.println("Telefone: "+p.getTelefone());  
            System.out.println("Endereço: "+p.getEndereco());  
            System.out.println("ID: "+p.getId());  

e no final você passou “c” que não tem nada nesse objeto

dao.remove(c); 

Bom dia …

Acho que o o id do cliente está nulo. Você teria duas opções para testar.

1 - Setar um valor para o ID do cliente

2 - Trocar o tipo do ID de Long para long

testa ai .

[]'s

Noooossa cara, eu não acredito. Era tudo por causa do “l” minusculo.
Putiz, o ID é setado quando eu vou adicionar os elementos na lista.

Bom, valeu a ajuda.
Obrigado
Abss