in src/main/java/org/apache/commons/dbutils/QueryRunner.java [382:418]
public <T> T insert(final Connection conn, final String sql, final ResultSetHandler<T> rsh, final Object... params) throws SQLException {
if (conn == null) {
throw new SQLException("Null connection");
}
if (sql == null) {
throw new SQLException("Null SQL statement");
}
if (rsh == null) {
throw new SQLException("Null ResultSetHandler");
}
Statement stmt = null;
T generatedKeys = null;
try {
if (params != null && params.length > 0) {
final PreparedStatement ps = conn.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);
stmt = ps;
this.fillStatement(ps, params);
ps.executeUpdate();
} else {
stmt = conn.createStatement();
stmt.executeUpdate(sql, Statement.RETURN_GENERATED_KEYS);
}
try (ResultSet resultSet = stmt.getGeneratedKeys()) {
generatedKeys = rsh.handle(resultSet);
}
} catch (final SQLException e) {
rethrow(e, sql, params);
} finally {
close(stmt);
}
return generatedKeys;
}