Bom dia pessoal,
Estou tentando efetuar um SELECT no BD e estou apanhando, retorna que a coluna "idAposta" não existe, e no BD ela existe. Vejam o código
public void pegarProximoId() {
// List<Aposta> apostas = new ArrayList<Aposta>();
// PreparedStatement stmt = this.connetion.
// prepareStatement("select * from contatos");
String sql = "select last_insert_id() + 1 from aposta limit 1";
try {
PreparedStatement stmt = this.connection.prepareStatement(sql);
ResultSet rs = stmt.executeQuery();
while (rs.next()) {
Aposta aposta = new Aposta();
aposta.setIdAposta(rs.getLong("idAposta"));
}
rs.close();
stmt.close();
//connection.close();
} catch (SQLException e) {
throw new RuntimeException(e);
}
O que pode ser feito, gostaria que “pegar” o último idAposta…
Valew!
Se for só pra pegar o último, tente select max(idAposta) from apostas
Roselito, adicionei algumas linha na própria Dao e deu certo, obrigado pela atenção!
[code]ResultSet rs = stmt.getGeneratedKeys();
rs.next();
long idGerado = rs.getLong(1);
aposta.setIdAposta(idGerado);[/code]
Veja o código completo, sugestões são bem vindas!
public class ApostaDao {
private Connection connection;
public ApostaDao() throws SQLException {
this.connection = new ConnectionFactory().getConnection();
}
public void adicionar(Aposta aposta) {
String sql = "insert into aposta (usuarioId, concursoId, grupoId, dataAposta, apostaAtiva) "
+ "values (?,?,?,?,?)";
try {
// PreparedStatement para inserção do dados
PreparedStatement stmt = this.connection.prepareStatement
(sql, Statement.RETURN_GENERATED_KEYS);
// seta os valores, busca os valores que estão na classe Usuario e
// os armazena na variavel stmt)
//stmt.setLong(1, aposta.getIdAposta());
stmt.setLong(1, aposta.getUsuarioId());
stmt.setLong(2, aposta.getConcursoId());
stmt.setLong(3, aposta.getGrupoId());
stmt.setDate(4, new Date(aposta.getDataAposta().getTimeInMillis()));
stmt.setBoolean(5, aposta.getApostaAtiva());
// executa, armazena os valores no BD
stmt.execute();
// pesquisa os ID
ResultSet rs = stmt.getGeneratedKeys();
rs.next();
long idGerado = rs.getLong(1);
aposta.setIdAposta(idGerado);
stmt.close();
} catch (SQLException e) {
throw new RuntimeException(e);
}
}