¿Hay alguna manera de recuperar la clave generada automáticamente de una consulta DB cuando se utiliza una consulta java con sentencias preparadas?¿Hay alguna manera de recuperar el autoincrement ID de una instrucción preparada?
Por ejemplo, sé que AutoGeneratedKeys puede funcionar de la siguiente manera.
stmt = conn.createStatement();
stmt.executeUpdate(sql, Statement.RETURN_GENERATED_KEYS);
if(returnLastInsertId) {
ResultSet rs = stmt.getGeneratedKeys();
rs.next();
auto_id = rs.getInt(1);
}
Sin embargo. ¿Qué sucede si quiero hacer una inserción con una Declaración preparada?
String sql = "INSERT INTO table (column1, column2) values(?, ?)";
stmt = conn.prepareStatement(sql);
//this is an error
stmt.executeUpdate(Statement.RETURN_GENERATED_KEYS);
if(returnLastInsertId) {
//this is an error since the above is an error
ResultSet rs = stmt.getGeneratedKeys();
rs.next();
auto_id = rs.getInt(1);
}
Hay una manera de hacer esto que no conozco. Parece desde el javadoc que PreparedStatements no puede devolver el ID generado automáticamente.
returnLastInsertId de dónde sacas esta variable – dedpo