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!