NullPointerException - Coluna Banco de dados

3 respostas
E

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
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<Cliente> getList() {
		try {
			PreparedStatement stmt = this.con
					.prepareStatement("select*from clientes");
			ResultSet rs = stmt.executeQuery();
			List<Cliente> clientes = new ArrayList<Cliente>();
			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();
		}
	}
	
	
	
	

}
Código - Classe Cliente
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;
	}
	
	

}
Classe Principal - Onde eu estava testando as funcionalidades CRUD
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);

		
		
		
		
		
	}
	

}

e por fim, o erro:

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)

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!

3 Respostas

williamdasflores

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);
A

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

E

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

Criado 28 de outubro de 2011
Ultima resposta 28 de out. de 2011
Respostas 3
Participantes 3