Generated key handling for updates
----------------------------------
Key: DBUTILS-54
URL: https://issues.apache.org/jira/browse/DBUTILS-54
Project: Commons DbUtils
Issue Type: Improvement
Affects Versions: 1.2, Nightly Builds
Reporter: Michael Veprinsky
Priority: Minor
It would be great (and fairly easy to do) to provide a way to get autogenerated
keys from QueryRunner.update. There was an email thread about this in 2004 but
it seems it never was actually implemented.
http://mail-archives.apache.org/mod_mbox/commons-dev/200406.mbox/%[email protected]%3e
The thought is to provide an ability to recover generated keys, for instance by
providing a result set handler, in which case prepared statement would be
generated with RETURN_GENERATED_KEYS and getGeneratedKeys() would be passed to
the result handler.
It seems that in 1.2 there is a way to get PreparedStatement and work with
QueryRunner more as a support to JDBC but IMO it would be cool to add this
feature.
example solution:
public int update(Connection conn, String sql, Object... params)
throws SQLException {
update(sql, null, params);
}
protected PreparedStatement prepareStatement(Connection conn, String sql,
int autoGeneratedKeys)
throws SQLException {
return conn.prepareStatement(sql, autoGeneratedKeys);
}
public int update(Connection conn, String sql, ResultSetHandler<T> rsh,
Object... params)
throws SQLException {
PreparedStatement stmt = null;
int rows = 0;
try {
stmt = this.prepareStatement(conn, sql,
rsh==null?Statement.NO_GENERATED_KEY:Statement.RETURN_GENERATED_KEYS);
this.fillStatement(stmt, params);
rows = stmt.executeUpdate();
if(rsh!=null)
rsh.handle(stmt.getGeneratedKeys());
} catch (SQLException e) {
this.rethrow(e, sql, params);
} finally {
close(stmt);
}
return rows;
}
Thanks!
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.