[
https://issues.apache.org/jira/browse/DBUTILS-54?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12703471#action_12703471
]
Michael V commented on DBUTILS-54:
----------------------------------
I'll have to admit my ignorance, I never worked with Oracle and never needed
anything more advanced than a single generated key. Not sure how that even
works :)
Now, (ignorance, remember?), could you clarify, do you feel this feature is not
worth adding (because of many possible use cases and ways keys could be
retrieved), do you want me to update provided code or will you tweak it
yourself? I'm not opposed to any of the three, just wanted to plug what I found
to be a limitation.
Thanks.
> 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 V
> 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:
> {noformat}
> 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<?> 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;
> }
> {noformat}
> Thanks!
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.