[
https://issues.apache.org/jira/browse/DBUTILS-54?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12768640#action_12768640
]
Julien Aymé edited comment on DBUTILS-54 at 10/22/09 10:52 AM:
---------------------------------------------------------------
We should think about it, since there is three methods to indicate that the
generated keys should be returned:
The first one just tells that the generated keys should be returned:
{code}Connection#prepareStatement(String, int){code}
http://java.sun.com/javase/6/docs/api/java/sql/Connection.html#prepareStatement%28java.lang.String,%20int%29
The second one specifies the names of the columns from which the keys should be
generated
{code}Connection#prepareStatement(String, String[]){code}
http://java.sun.com/javase/6/docs/api/java/sql/Connection.html#prepareStatement%28java.lang.String,%20java.lang.String[]%29
and the last one specifies the indexes of the columns from which the keys
should be generated
{code}Connection#prepareStatement(String, int[]){code}
http://java.sun.com/javase/6/docs/api/java/sql/Connection.html#prepareStatement%28java.lang.String,%20int[]%29
I'm willing to contribute a patch with all three methods (this will however add
a lot of code into QueryRunner).
was (Author: [email protected]):
We should think about it, since there is three methods to indicate that the
generated keys should be returned:
The first one just tells that the generated keys should be returned:
{code}Connection#prepareStatement(String, int){code}
http://java.sun.com/javase/6/docs/api/java/sql/Connection.html#prepareStatement%28java.lang.String,%20int%29
The second one specifies the names of the columns from which the keys should be
generated
{code}Connection#prepareStatement(String, String[]){code}
http://java.sun.com/javase/6/docs/api/java/sql/Connection.html#prepareStatement%28java.lang.String,%20java.lang.String[]%29
and the last one specifies the indexes of the columns from which the keys
should be generated
{code}Connection#prepareStatement(String, int[]){code}
http://java.sun.com/javase/6/docs/api/java/sql/Connection.html#prepareStatement%28java.lang.String,%20int[]%29
I'm willing to contribute a path with all three methods (this will however add
a lot of code into QueryRunner).
> 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.