commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Julien Aymé (JIRA) <j...@apache.org>
Subject [jira] Issue Comment Edited: (DBUTILS-54) Generated key handling for updates
Date Thu, 22 Oct 2009 10:52:59 GMT

    [ 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: julien.ayme@gmail.com):
    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/%3C20040602024627.21604.qmail@web50606.mail.yahoo.com%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.


Mime
View raw message