Arraylist retorna null

11 respostas
Ale2006

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.

11 Respostas

fiaux

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()?

Ale2006

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

fiaux

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

rsakurai

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.

fiaux
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
             //}  
   
     }     
   
 }
Ale2006

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:

fiaux

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(); }

Ale2006

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

Ale2006

Beleza…obrigado…

fiaux

Tenta assim:

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

Ale2006

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

Criado 13 de maio de 2008
Ultima resposta 13 de mai. de 2008
Respostas 11
Participantes 3