Sou iniciante em JAVA e baixei a apostila da Caelum de Desenvolvimento para Web.
Estou com um problema no seguinte código:
[code]package br.com.caelum.jdbc.teste;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
import br.com.caelum.jdbc.dao.ContatoDAO;
import br.com.caelum.jdbc.modelo.Contato;
public class TestaInsere {
/**
* @param args
* @throws SQLException
*/
public static void main(String[] args) throws SQLException {
/*
// Adicionando dados ao contato
Contato contato = new Contato();
Scanner input = new Scanner(System.in);
System.out.println("Nome: ");
contato.setNome(input.nextLine());
System.out.println("Email: ");
contato.setEmail(input.nextLine());
System.out.println("Endereço: ");
contato.setEndereco(input.nextLine());
// Criando uma conexão;
ContatoDAO dao = new ContatoDAO();
// Inserindo dados no BD
dao.adiciona(contato);
*/
ContatoDAO dao = new ContatoDAO();
List<Contato> contatos = dao.getLista();
for (Contato contato: contatos) {
System.out.println("Nome: " + contato.getNome());
System.out.println("Email: " + contato.getEmail());
System.out.println("Endereço: " + contato.getEndereco() + "\n");
}
}
}[/code]
[code]package br.com.caelum.jdbc.dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import br.com.caelum.jdbc.ConnectionFactory;
import br.com.caelum.jdbc.modelo.Contato;
public class ContatoDAO {
Connection con;
public ResultSet rs;
// Conexão com o BD
public ContatoDAO() throws SQLException {
this.con = ConnectionFactory.getConnection();
}
public void adiciona(Contato contato) throws SQLException {
// Preparando o PreparedStatemend para a inserção
String sql = "INSERT INTO contatos (nome, email, endereco) " +
"VALUES (?,?,?)";
PreparedStatement stmt = con.prepareStatement(sql);
// Setando os valores
stmt.setString(1, contato.getNome());
stmt.setString(2, contato.getEmail());
stmt.setString(3, contato.getEndereco());
stmt.execute();
stmt.close();
}
public List<Contato> getLista() throws SQLException {
PreparedStatement stmt = con.prepareStatement("SELECT * FROM contatos");
stmt.executeQuery();
List<Contato> contatos = new ArrayList<Contato>();
do {
Contato contato = new Contato();
contato.setNome(rs.getString("nome"));
contato.setEmail(rs.getString("email"));
contato.setEndereco(rs.getString("endereco"));
contatos.add(contato);
} while(rs.next());
rs.close();
stmt.close();
return contatos;
}
}[/code]
Neste trecho está dando a seguinte exceção:
Exception in thread “main” java.lang.NullPointerException
at br.com.caelum.jdbc.dao.ContatoDAO.getLista(ContatoDAO.java:47)
at br.com.caelum.jdbc.teste.TestaInsere.main(TestaInsere.java:42)
Não estou conseguindo corrigir rsrs
O erro ocorre por correr o risco das List’s não estarem instanciadas?
[]'s