Neste código consigo alimentar setNome, setEmail, setEndereco, mas não consigo alimentar setId, retorna como null, o que posso deixar de estar fazendo?
public List<Contato> getLista() throws SQLException {
PreparedStatement stmt = this.connection.prepareStatement("select * from contatos order by nome");
ResultSet rs = stmt.executeQuery();
List<Contato> contatos = new ArrayList<Contato>();
while(rs.next()) {
// criando o objeto Contato
Contato contato = new Contato();
contato.setId(rs.getLong("id"));
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;
}
Pode ser que NULL seja mesmo o retorno do banco de dados.
Verifique se o campo Id não está NULL no BD.
Abraços!
R
rodney3400
Olá XpLoDeR
O Campo id no banco de dados é autoincremento e não esta null, verifiquei isso.
Estou buscando em alguns livros aqui mas nada de achar algo que não me satisfaça nisso.
Mais alguma proposta a se fazer?
Obrigado
Rodney Peixoto
gabrielmassote
Tudo bem rodney3400?
Vendo o tópico seu e os comentário do meu caro amigo Gustavo, penso que a única coisa a mais ai é você verificar se o campo que esta setado como id no banco é mesmo long, com isso verifique também se o tipo do id na sua classe e do banco são do mesmo tipo.
Qualquer coisa estamos a disposição.
Abraços.
R
rodney3400
O campo no mysql é BigInt
Rodney Peixoto
gabrielmassote
Nunca vi como recuperar este tipo…
ja tentou pegar como int??
XpLoDeR
rodney3400:
O campo no mysql é BigInt
Rodney Peixoto
Olá Rodney,
Creio que esteja mesmo havendo uma incompatibilidade de tipos aí como o meu amigo Gabriel Massote disse.
Abraços!
R
rodney3400
O que precisam para que eu possa colocar aqui pra ver esta incompatibilidade?
Obrigado
Rodney Peixoto
XpLoDeR
rodney3400:
O que precisam para que eu possa colocar aqui pra ver esta incompatibilidade?
Obrigado
Rodney Peixoto
Não sei se dará certo, mas tente usar a função “rs.getBigDecimal”.
Abraços!
wswillianss
Olá,
Tente mudar o tipo da variável na sua classe de modelo Contato, assim:
private long id;
para
private Long id;
R
rodney3400
Já esta como
private Long id;
Obrigado.
Rodney Peixoto
wswillianss
rodney3400:
Já esta como
private Long id;
Obrigado.
Rodney Peixoto
Olhando seu código dá para ver que está correto. Agora resta saber como estar seu ConnectionFactory.java e seu Contato.java. Ou se sua tabela esta correta…
R
rodney3400
Ola,
Já são 03:00, e estou aqui na frente do pc, desde as 13:00h, e preciso dormir um pouco…rs… então continuarei amanha nesta busca incançável…rs…
Até mais,
Obrigado a todos pela colaboração.
Rodney Peixoto.
wswillianss
… dá uma olhada nesses arquivos e veja se o seu está parecido:
packagebr.com.caelum.jdbc;importjava.sql.Connection;importjava.sql.PreparedStatement;importjava.sql.ResultSet;importjava.sql.SQLException;importjava.util.ArrayList;importjava.util.List;publicclassContatoDAO{privateConnectionconnection;publicContatoDAO()throwsSQLException{this.connection=ConnectionFactory.getConnection();}publicList<Contato>pesquisa(Contatocontato)throwsSQLException{PreparedStatementstmt=this.connection.prepareStatement("select * from contatos where id=?");stmt.setLong(1,contato.getId());ResultSetrs=stmt.executeQuery();List<Contato>lista=newArrayList<Contato>();while(rs.next()){Contatoc=newContato();c.setId(rs.getLong("id"));c.setNome(rs.getString("nome"));c.setFone(rs.getString("fone"));c.setEmail(rs.getString("email"));lista.add(c);}rs.close();stmt.close();this.connection.close();returnlista;}publicvoidaltera(Contatocontato)throwsSQLException{PreparedStatementstmt=this.connection.prepareStatement("update contatos set "+"nome=?,fone=?,email=? where id=?");stmt.setString(1,contato.getNome());stmt.setString(2,contato.getFone());stmt.setString(3,contato.getEmail());stmt.setLong(4,contato.getId());stmt.execute();stmt.close();this.connection.close();}publicvoidremove(Contatocontato)throwsSQLException{PreparedStatementstmt=this.connection.prepareStatement("delete from contatos where id=?");stmt.setLong(1,contato.getId());stmt.execute();stmt.close();this.connection.close();}publicvoidadiciona(Contatocontato)throwsSQLException{PreparedStatementstmt=this.connection.prepareStatement("insert into contatos(nome,fone,email)"+"values(?,?,?)");stmt.setString(1,contato.getNome());stmt.setString(2,contato.getFone());stmt.setString(3,contato.getEmail());stmt.execute();stmt.close();this.connection.close();}publicList<Contato>getLista()throwsSQLException{PreparedStatementstmt=this.connection.prepareStatement("select * from contatos order by id DESC");ResultSetrs=stmt.executeQuery();List<Contato>lista=newArrayList<Contato>();while(rs.next()){Contatoc=newContato();c.setId(rs.getLong("id"));c.setNome(rs.getString("nome"));c.setFone(rs.getString("fone"));c.setEmail(rs.getString("email"));lista.add(c);}rs.close();stmt.close();this.connection.close();returnlista;}}
Qualquer coisa posta de novo.
Abraço!
XpLoDeR
Olá Rodney,
criei uma tabela no mysql aqui (id : BIGINT e nome : VARCHAR) e uma classe para testar.
Funcionou perfeitamente, tanto com getLong quanto com getBigDecimal.