Alguém sabe porque o meu PreparedStatement não está conseguindo pegar o ultimo id inserido? e tem alguma alternativa?
Se alguem ja passou por esse problema usando JDBC, qual foi a solução encontrada?
public void incluirPeloTermo(TermoVO bean) {
Connection con = DAO.getConexao();
String sql = "insert into " +
"orcamento(funcaoid,subfuncaoid,programaid,projeto_orcid,naturezaid)" +
"values(?,?,?,?,?)";
try {
PreparedStatement ps = con.prepareStatement(sql,PreparedStatement.RETURN_GENERATED_KEYS);
ps.setInt(1, bean.getOrcamento().getFuncao().getFuncaoid());
ps.setInt(2, bean.getOrcamento().getSubfuncao().getSubfuncaoid());
ps.setInt(3, bean.getOrcamento().getPrograma().getProgramaid());
ps.setInt(4, bean.getOrcamento().getProjeto_orc().getProjeto_orcid());
ps.setInt(5, bean.getOrcamento().getNatureza().getNaturezaid());
ps.execute();
ResultSet rs = ps.getGeneratedKeys();
while(rs.next()){
orcamentoid = rs.getInt(1);
}
rs.close();
ps.close();
} catch (SQLException e) {
System.out.println("Erro na Insercao de orcamento");
e.printStackTrace();
}
}
Segue o erro:
java.sql.SQLException: Generated keys not requested. You need to specify Statement.RETURN_GENERATED_KEYS to Statement.executeUpdate() or Connection.prepareStatement().
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1075)