Ottenere l’id auto-generato dopo un insert SQL in Java

Quando è necessario conoscere il valore di un campo auto-increment di un record appena inserito, basta inizializzare un preparedStatement (in Java) in questo modo:

String sql = "INSERT INTO table (column1, column2) values(?, ?)";
stmt = conn.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);

La costante

Statement.RETURN_GENERATED_KEYS

è quella che inizializza lo statement predisponendo la richiesta dei valori auto-increment. A questo punto è possibile leggere i valori auto-increment appena generati in questo modo:

rs= stmt.getGeneratedKeys();
rs.next();
auto_id = rs.getInt(1);

Quest’ultima riga di codice permetterà di avere il valore del primo campo auto-increment della tabella. Analogamente si possono avere gli eventuali altri valori, se la tabella in questione avesse più di un campo auto-increment.

E’ possibile fare lo stesso anche con i normali Statement (non preparedStatement), in questo modo:

stmt = conn.createStatement();
stmt.executeUpdate(sql, Statement.RETURN_GENERATED_KEYS);