Arraylist retorna null

Boa tarde pessoal, estou com um probleminha.
Criei a classe :

public class ContatoDAO {
	private Connection connection;
	
	public ContatoDAO() throws SQLException {
		this.connection = ConnectionFactory.getConnection();
	}
	
	public List getLista() throws SQLException {
		PreparedStatement stmt =
		this.connection.prepareStatement("select * from contatos");
		ResultSet rs = stmt.executeQuery();
		List contatos = new ArrayList();
		while (rs.next()) {
//		criando o objeto Contato
		Contato contato = new Contato();
		contato.setNome(rs.getString("nome"));
		contato.setEmail(rs.getString("email"));
		contato.setEndereco(rs.getString("endereco"));
//		adicionando o objeto à lista
		contatos.add(contato);
		}
		rs.close();
		stmt.close();
		return contatos;
	}			
	
}

e em seguida criei a classe :

public class TestaListaDAO {
	
	public static void main(String[] args) throws SQLException {
		 ContatoDAO dao = new ContatoDAO();
	     Contato contato = new Contato();
		 
		 List 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");
			//}
 
	}	

}

Porém, qdo executo a aplicação, obtenho esse resultado:

Nome: null
Email: null
Endereço: null

Sendo que possuo dados na minha tabela do banco de dados.

Na verdade, na linha "List contatos = new ArrayList(); " eu queria ter feito assim

Mas nao foi possivel, estou usando a versao 1.4 do Jdk, sera que é por isso?

O q estou fazendo de errado?
Obrigado.

Bom, a princípio (olhando rápido) parece que não veio nada do banco. Tem dados na tabela? Os nomes das colunas são os que você usou nos rs.getString()?

Sim, os nomes do campos estao corretos, mas ainda continua retornando NULL!!!
O que pode ser?

Peraí, por acaso você iterou na lista retornada? O for tá comentado!

Parece que está imprimindo tudo null, porque vc criou o objeto na linha 05 da classe TestaListaDAO, depois não inicializou os atributos.

Fora isso, verifique se está tudo certo no banco como o fiaux disse.

[code] public class TestaListaDAO {

 public static void main(String[] args) throws SQLException {  
      ContatoDAO dao = new ContatoDAO();  
      Contato contato = new Contato();  //todos os atributos tem valor null
        
      List contatos = dao.getLista();  
      //for (Contato contato : contatos) {  
         System.out.println("Nome: " + contato.getNome());  //essa instancia é a lá de cima Contato contato = new Contato(); com todos os atributos null
         System.out.println("Email: " + contato.getEmail());    //essa instancia é a lá de cima Contato contato = new Contato(); com todos os atributos null
         System.out.println("Endereço: " + contato.getEndereco() + "\n");    //essa instancia é a lá de cima Contato contato = new Contato(); com todos os atributos null
         //}  

 }     

}[/code]

Entao, se eu “descomentar” esse FOR, da erro!!!

Exception in thread "main" java.lang.Error: Unresolved compilation problems: 
	Syntax error on token(s), misplaced construct(s)
	Syntax error on token ")", : expected

	at br.com.caelum.jdbc.TestaListaDAO.main(TestaListaDAO.java:32)

e eu nao faço ideia de como arrumar… :oops:

Eu acho que é isso. Você disse que usa java 1.4. For each é 1.5. Por isso dá esse erro. Ou muda a jdk ou muda o for para aquele tradicional.

for ( Iterator iterator = contatos.iterator(); iterator.hasNext(); ) { Contato contato = Contato iterator.next(); }

Porque essa linha //for (Contato contato : contatos) { esta dando erro?

Beleza…obrigado…

Tenta assim:

List contatos = dao.getLista(); for ( Iterator iterator = contatos.iterator(); iterator.hasNext(); ) { Contato contato = (Contato) iterator.next(); }

Fiaux, muito obrigado…
Resolveu!!! :smiley: