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);