Save This Page
Home » openjdk-7 » java » sql » [javadoc | source]
    1   /*
    2    * Copyright 1998-2005 Sun Microsystems, Inc.  All Rights Reserved.
    3    * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
    4    *
    5    * This code is free software; you can redistribute it and/or modify it
    6    * under the terms of the GNU General Public License version 2 only, as
    7    * published by the Free Software Foundation.  Sun designates this
    8    * particular file as subject to the "Classpath" exception as provided
    9    * by Sun in the LICENSE file that accompanied this code.
   10    *
   11    * This code is distributed in the hope that it will be useful, but WITHOUT
   12    * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
   13    * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
   14    * version 2 for more details (a copy is included in the LICENSE file that
   15    * accompanied this code).
   16    *
   17    * You should have received a copy of the GNU General Public License version
   18    * 2 along with this work; if not, write to the Free Software Foundation,
   19    * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
   20    *
   21    * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
   22    * CA 95054 USA or visit www.sun.com if you need additional information or
   23    * have any questions.
   24    */
   25   
   26   package java.sql;
   27   
   28   /**
   29    * The subclass of {@link SQLException} thrown when an error
   30    * occurs during a batch update operation.  In addition to the
   31    * information provided by {@link SQLException}, a
   32    * <code>BatchUpdateException</code> provides the update
   33    * counts for all commands that were executed successfully during the
   34    * batch update, that is, all commands that were executed before the error
   35    * occurred.  The order of elements in an array of update counts
   36    * corresponds to the order in which commands were added to the batch.
   37    * <P>
   38    * After a command in a batch update fails to execute properly
   39    * and a <code>BatchUpdateException</code> is thrown, the driver
   40    * may or may not continue to process the remaining commands in
   41    * the batch.  If the driver continues processing after a failure,
   42    * the array returned by the method
   43    * <code>BatchUpdateException.getUpdateCounts</code> will have
   44    * an element for every command in the batch rather than only
   45    * elements for the commands that executed successfully before
   46    * the error.  In the case where the driver continues processing
   47    * commands, the array element for any command
   48    * that failed is <code>Statement.EXECUTE_FAILED</code>.
   49    * <P>
   50    * @since 1.2
   51    */
   52   
   53   public class BatchUpdateException extends SQLException {
   54   
   55     /**
   56      * Constructs a <code>BatchUpdateException</code> object initialized with a given
   57      * <code>reason</code>, <code>SQLState</code>, <code>vendorCode</code> and
   58      * <code>updateCounts</code>.
   59      * The <code>cause</code> is not initialized, and may subsequently be
   60      * initialized by a call to the
   61      * {@link Throwable#initCause(java.lang.Throwable)} method.
   62      * <p>
   63      *
   64      * @param reason a description of the error
   65      * @param SQLState an XOPEN or SQL:2003 code identifying the exception
   66      * @param vendorCode an exception code used by a particular
   67      * database vendor
   68      * @param updateCounts an array of <code>int</code>, with each element
   69      * indicating the update count, <code>Statement.SUCCESS_NO_INFO</code> or
   70      * <code>Statement.EXECUTE_FAILED</code> for each SQL command in
   71      * the batch for JDBC drivers that continue processing
   72      * after a command failure; an update count or
   73      * <code>Statement.SUCCESS_NO_INFO</code> for each SQL command in the batch
   74      * prior to the failure for JDBC drivers that stop processing after a command
   75      * failure
   76      * @since 1.2
   77      */
   78     public BatchUpdateException( String reason, String SQLState, int vendorCode,
   79                                  int[] updateCounts ) {
   80       super(reason, SQLState, vendorCode);
   81       this.updateCounts = updateCounts;
   82     }
   83   
   84     /**
   85      * Constructs a <code>BatchUpdateException</code> object initialized with a given
   86      * <code>reason</code>, <code>SQLState</code> and
   87      * <code>updateCounts</code>.
   88      * The <code>cause</code> is not initialized, and may subsequently be
   89      * initialized by a call to the
   90      * {@link Throwable#initCause(java.lang.Throwable)} method. The vendor code
   91      * is intialized to 0.
   92      * <p>
   93      *
   94      * @param reason a description of the exception
   95      * @param SQLState an XOPEN or SQL:2003 code identifying the exception
   96      * @param updateCounts an array of <code>int</code>, with each element
   97      * indicating the update count, <code>Statement.SUCCESS_NO_INFO</code> or
   98      * <code>Statement.EXECUTE_FAILED</code> for each SQL command in
   99      * the batch for JDBC drivers that continue processing
  100      * after a command failure; an update count or
  101      * <code>Statement.SUCCESS_NO_INFO</code> for each SQL command in the batch
  102      * prior to the failure for JDBC drivers that stop processing after a command
  103      * failure
  104      * @since 1.2
  105      */
  106     public BatchUpdateException(String reason, String SQLState,
  107                                 int[] updateCounts) {
  108       super(reason, SQLState);
  109       this.updateCounts = updateCounts;
  110     }
  111   
  112     /**
  113      * Constructs a <code>BatchUpdateException</code> object initialized with a given
  114      * <code>reason</code> and <code>updateCounts</code>.
  115      * The <code>cause</code> is not initialized, and may subsequently be
  116      * initialized by a call to the
  117      * {@link Throwable#initCause(java.lang.Throwable)} method.  The
  118      * <code>SQLState</code> is initialized to <code>null</code>
  119      * and the vender code is initialized to 0.
  120      * <p>
  121      *
  122      *
  123      * @param reason a description of the exception
  124      * @param updateCounts an array of <code>int</code>, with each element
  125      * indicating the update count, <code>Statement.SUCCESS_NO_INFO</code> or
  126      * <code>Statement.EXECUTE_FAILED</code> for each SQL command in
  127      * the batch for JDBC drivers that continue processing
  128      * after a command failure; an update count or
  129      * <code>Statement.SUCCESS_NO_INFO</code> for each SQL command in the batch
  130      * prior to the failure for JDBC drivers that stop processing after a command
  131      * failure
  132      * @since 1.2
  133      */
  134     public  BatchUpdateException(String reason, int[] updateCounts) {
  135       super(reason);
  136       this.updateCounts = updateCounts;
  137     }
  138   
  139     /**
  140      * Constructs a <code>BatchUpdateException</code> object initialized with a given
  141      * <code>updateCounts</code>.
  142      * initialized by a call to the
  143      * {@link Throwable#initCause(java.lang.Throwable)} method. The  <code>reason</code>
  144      * and <code>SQLState</code> are initialized to null and the vendor code
  145      * is initialized to 0.
  146      * <p>
  147      *
  148      * @param updateCounts an array of <code>int</code>, with each element
  149      * indicating the update count, <code>Statement.SUCCESS_NO_INFO</code> or
  150      * <code>Statement.EXECUTE_FAILED</code> for each SQL command in
  151      * the batch for JDBC drivers that continue processing
  152      * after a command failure; an update count or
  153      * <code>Statement.SUCCESS_NO_INFO</code> for each SQL command in the batch
  154      * prior to the failure for JDBC drivers that stop processing after a command
  155      * failure
  156      * @since 1.2
  157      */
  158     public BatchUpdateException(int[] updateCounts) {
  159       super();
  160       this.updateCounts = updateCounts;
  161     }
  162   
  163     /**
  164      * Constructs a <code>BatchUpdateException</code> object.
  165      * The <code>reason</code>, <code>SQLState</code> and <code>updateCounts</code>
  166      *  are initialized to <code>null</code> and the vendor code is initialized to 0.
  167      * The <code>cause</code> is not initialized, and may subsequently be
  168      * initialized by a call to the
  169      * {@link Throwable#initCause(java.lang.Throwable)} method.
  170      * <p>
  171      *
  172      * @since 1.2
  173      */
  174     public BatchUpdateException() {
  175       super();
  176       this.updateCounts = null;
  177     }
  178   
  179       /**
  180        * Constructs a <code>BatchUpdateException</code> object initialized with
  181        *  a given <code>cause</code>.
  182        * The <code>SQLState</code> and <code>updateCounts</code>
  183        * are initialized
  184        * to <code>null</code> and the vendor code is initialized to 0.
  185        * The <code>reason</code>  is initialized to <code>null</code> if
  186        * <code>cause==null</code> or to <code>cause.toString()</code> if
  187        *  <code>cause!=null</code>.
  188        * @param cause the underlying reason for this <code>SQLException</code>
  189        * (which is saved for later retrieval by the <code>getCause()</code> method);
  190        * may be null indicating the cause is non-existent or unknown.
  191        * @since 1.6
  192        */
  193       public BatchUpdateException(Throwable cause) {
  194           super(cause);
  195           this.updateCounts = null;
  196       }
  197   
  198       /**
  199        * Constructs a <code>BatchUpdateException</code> object initialized with a
  200        * given <code>cause</code> and <code>updateCounts</code>.
  201        * The <code>SQLState</code> is initialized
  202        * to <code>null</code> and the vendor code is initialized to 0.
  203        * The <code>reason</code>  is initialized to <code>null</code> if
  204        * <code>cause==null</code> or to <code>cause.toString()</code> if
  205        * <code>cause!=null</code>.
  206        *
  207        * @param updateCounts an array of <code>int</code>, with each element
  208        * indicating the update count, <code>Statement.SUCCESS_NO_INFO</code> or
  209      * <code>Statement.EXECUTE_FAILED</code> for each SQL command in
  210      * the batch for JDBC drivers that continue processing
  211      * after a command failure; an update count or
  212      * <code>Statement.SUCCESS_NO_INFO</code> for each SQL command in the batch
  213      * prior to the failure for JDBC drivers that stop processing after a command
  214      * failure
  215        * @param cause the underlying reason for this <code>SQLException</code>
  216        * (which is saved for later retrieval by the <code>getCause()</code> method); may be null indicating
  217        * the cause is non-existent or unknown.
  218        * @since 1.6
  219        */
  220       public BatchUpdateException(int []updateCounts , Throwable cause) {
  221           super(cause);
  222           this.updateCounts = updateCounts;
  223       }
  224   
  225       /**
  226        * Constructs a <code>BatchUpdateException</code> object initialized with
  227        * a given <code>reason</code>, <code>cause</code>
  228        * and <code>updateCounts</code>. The <code>SQLState</code> is initialized
  229        * to <code>null</code> and the vendor code is initialized to 0.
  230        *
  231        * @param reason a description of the exception
  232        * @param updateCounts an array of <code>int</code>, with each element
  233        *indicating the update count, <code>Statement.SUCCESS_NO_INFO</code> or
  234      * <code>Statement.EXECUTE_FAILED</code> for each SQL command in
  235      * the batch for JDBC drivers that continue processing
  236      * after a command failure; an update count or
  237      * <code>Statement.SUCCESS_NO_INFO</code> for each SQL command in the batch
  238      * prior to the failure for JDBC drivers that stop processing after a command
  239      * failure
  240        * @param cause the underlying reason for this <code>SQLException</code> (which is saved for later retrieval by the <code>getCause()</code> method);
  241        * may be null indicating
  242        * the cause is non-existent or unknown.
  243        * @since 1.6
  244        */
  245       public BatchUpdateException(String reason, int []updateCounts, Throwable cause) {
  246           super(reason,cause);
  247           this.updateCounts = updateCounts;
  248       }
  249   
  250       /**
  251        * Constructs a <code>BatchUpdateException</code> object initialized with
  252        * a given <code>reason</code>, <code>SQLState</code>,<code>cause</code>, and
  253      * <code>updateCounts</code>. The vendor code is initialized to 0.
  254        *
  255        * @param reason a description of the exception
  256        * @param SQLState an XOPEN or SQL:2003 code identifying the exception
  257        * @param updateCounts an array of <code>int</code>, with each element
  258        * indicating the update count, <code>Statement.SUCCESS_NO_INFO</code> or
  259      * <code>Statement.EXECUTE_FAILED</code> for each SQL command in
  260      * the batch for JDBC drivers that continue processing
  261      * after a command failure; an update count or
  262      * <code>Statement.SUCCESS_NO_INFO</code> for each SQL command in the batch
  263      * prior to the failure for JDBC drivers that stop processing after a command
  264      * failure
  265        * @param cause the underlying reason for this <code>SQLException</code> (which is saved for later retrieval by the <code>getCause()</code> method);
  266        * may be null indicating
  267        * the cause is non-existent or unknown.
  268        * @since 1.6
  269        */
  270       public BatchUpdateException(String reason, String SQLState,
  271                                   int []updateCounts, Throwable cause) {
  272           super(reason,SQLState,cause);
  273           this.updateCounts = updateCounts;
  274       }
  275   
  276       /**
  277        * Constructs a <code>BatchUpdateException</code> object initialized with
  278        * a given <code>reason</code>, <code>SQLState</code>, <code>vendorCode</code>
  279        * <code>cause</code> and <code>updateCounts</code>.
  280        *
  281        * @param reason a description of the error
  282        * @param SQLState an XOPEN or SQL:2003 code identifying the exception
  283        * @param vendorCode an exception code used by a particular
  284        * database vendor
  285        * @param updateCounts an array of <code>int</code>, with each element
  286        *indicating the update count, <code>Statement.SUCCESS_NO_INFO</code> or
  287      * <code>Statement.EXECUTE_FAILED</code> for each SQL command in
  288      * the batch for JDBC drivers that continue processing
  289      * after a command failure; an update count or
  290      * <code>Statement.SUCCESS_NO_INFO</code> for each SQL command in the batch
  291      * prior to the failure for JDBC drivers that stop processing after a command
  292      * failure
  293        * @param cause the underlying reason for this <code>SQLException</code> (which is saved for later retrieval by the <code>getCause()</code> method);
  294        * may be null indicating
  295        * the cause is non-existent or unknown.
  296        * @since 1.6
  297        */
  298       public BatchUpdateException(String reason, String SQLState, int vendorCode,
  299                                   int []updateCounts,Throwable cause) {
  300           super(reason,SQLState,vendorCode,cause);
  301           this.updateCounts = updateCounts;
  302       }
  303   
  304     /**
  305      * Retrieves the update count for each update statement in the batch
  306      * update that executed successfully before this exception occurred.
  307      * A driver that implements batch updates may or may not continue to
  308      * process the remaining commands in a batch when one of the commands
  309      * fails to execute properly. If the driver continues processing commands,
  310      * the array returned by this method will have as many elements as
  311      * there are commands in the batch; otherwise, it will contain an
  312      * update count for each command that executed successfully before
  313      * the <code>BatchUpdateException</code> was thrown.
  314      *<P>
  315      * The possible return values for this method were modified for
  316      * the Java 2 SDK, Standard Edition, version 1.3.  This was done to
  317      * accommodate the new option of continuing to process commands
  318      * in a batch update after a <code>BatchUpdateException</code> object
  319      * has been thrown.
  320      *
  321      * @return an array of <code>int</code> containing the update counts
  322      * for the updates that were executed successfully before this error
  323      * occurred.  Or, if the driver continues to process commands after an
  324      * error, one of the following for every command in the batch:
  325      * <OL>
  326      * <LI>an update count
  327      *  <LI><code>Statement.SUCCESS_NO_INFO</code> to indicate that the command
  328      *     executed successfully but the number of rows affected is unknown
  329      *  <LI><code>Statement.EXECUTE_FAILED</code> to indicate that the command
  330      *     failed to execute successfully
  331      * </OL>
  332      * @since 1.3
  333      */
  334     public int[] getUpdateCounts() {
  335       return updateCounts;
  336     }
  337   
  338     /**
  339      * The array that describes the outcome of a batch execution.
  340      * @serial
  341      * @since 1.2
  342      */
  343     private int[] updateCounts;
  344   
  345     private static final long serialVersionUID = 5977529877145521757L;
  346   }

Save This Page
Home » openjdk-7 » java » sql » [javadoc | source]