jdk/src/share/classes/java/sql/SQLInput.java
changeset 2 90ce3da70b43
child 5506 202f599c92aa
equal deleted inserted replaced
0:fd16c54261b3 2:90ce3da70b43
       
     1 /*
       
     2  * Copyright 1998-2006 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  * An input stream that contains a stream of values representing an
       
    30  * instance of an SQL structured type or an SQL distinct type.
       
    31  * This interface, used only for custom mapping, is used by the driver
       
    32  * behind the scenes, and a programmer never directly invokes
       
    33  * <code>SQLInput</code> methods. The <i>reader</i> methods
       
    34  * (<code>readLong</code>, <code>readBytes</code>, and so on)
       
    35  * provide a way  for an implementation of the <code>SQLData</code>
       
    36  *  interface to read the values in an <code>SQLInput</code> object.
       
    37  *  And as described in <code>SQLData</code>, calls to reader methods must
       
    38  * be made in the order that their corresponding attributes appear in the
       
    39  * SQL definition of the type.
       
    40  * The method <code>wasNull</code> is used to determine whether
       
    41  * the last value read was SQL <code>NULL</code>.
       
    42  * <P>When the method <code>getObject</code> is called with an
       
    43  * object of a class implementing the interface <code>SQLData</code>,
       
    44  * the JDBC driver calls the method <code>SQLData.getSQLType</code>
       
    45  * to determine the SQL type of the user-defined type (UDT)
       
    46  * being custom mapped. The driver
       
    47  * creates an instance of <code>SQLInput</code>, populating it with the
       
    48  * attributes of the UDT.  The driver then passes the input
       
    49  * stream to the method <code>SQLData.readSQL</code>, which in turn
       
    50  * calls the <code>SQLInput</code> reader methods
       
    51  * in its implementation for reading the
       
    52  * attributes from the input stream.
       
    53  * @since 1.2
       
    54  */
       
    55 
       
    56 public interface SQLInput {
       
    57 
       
    58 
       
    59     //================================================================
       
    60     // Methods for reading attributes from the stream of SQL data.
       
    61     // These methods correspond to the column-accessor methods of
       
    62     // java.sql.ResultSet.
       
    63     //================================================================
       
    64 
       
    65     /**
       
    66      * Reads the next attribute in the stream and returns it as a <code>String</code>
       
    67      * in the Java programming language.
       
    68      *
       
    69      * @return the attribute; if the value is SQL <code>NULL</code>, returns <code>null</code>
       
    70      * @exception SQLException if a database access error occurs
       
    71      * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
       
    72      * this method
       
    73      * @since 1.2
       
    74      */
       
    75     String readString() throws SQLException;
       
    76 
       
    77     /**
       
    78      * Reads the next attribute in the stream and returns it as a <code>boolean</code>
       
    79      * in the Java programming language.
       
    80      *
       
    81      * @return the attribute; if the value is SQL <code>NULL</code>, returns <code>false</code>
       
    82      * @exception SQLException if a database access error occurs
       
    83      * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
       
    84      * this method
       
    85      * @since 1.2
       
    86      */
       
    87     boolean readBoolean() throws SQLException;
       
    88 
       
    89     /**
       
    90      * Reads the next attribute in the stream and returns it as a <code>byte</code>
       
    91      * in the Java programming language.
       
    92      *
       
    93      * @return the attribute; if the value is SQL <code>NULL</code>, returns <code>0</code>
       
    94      * @exception SQLException if a database access error occurs
       
    95      * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
       
    96      * this method
       
    97      * @since 1.2
       
    98      */
       
    99     byte readByte() throws SQLException;
       
   100 
       
   101     /**
       
   102      * Reads the next attribute in the stream and returns it as a <code>short</code>
       
   103      * in the Java programming language.
       
   104      *
       
   105      * @return the attribute; if the value is SQL <code>NULL</code>, returns <code>0</code>
       
   106      * @exception SQLException if a database access error occurs
       
   107      * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
       
   108      * this method
       
   109      * @since 1.2
       
   110      */
       
   111     short readShort() throws SQLException;
       
   112 
       
   113     /**
       
   114      * Reads the next attribute in the stream and returns it as an <code>int</code>
       
   115      * in the Java programming language.
       
   116      *
       
   117      * @return the attribute; if the value is SQL <code>NULL</code>, returns <code>0</code>
       
   118      * @exception SQLException if a database access error occurs
       
   119      * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
       
   120      * this method
       
   121      * @since 1.2
       
   122      */
       
   123     int readInt() throws SQLException;
       
   124 
       
   125     /**
       
   126      * Reads the next attribute in the stream and returns it as a <code>long</code>
       
   127      * in the Java programming language.
       
   128      *
       
   129      * @return the attribute; if the value is SQL <code>NULL</code>, returns <code>0</code>
       
   130      * @exception SQLException if a database access error occurs
       
   131      * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
       
   132      * this method
       
   133      * @since 1.2
       
   134      */
       
   135     long readLong() throws SQLException;
       
   136 
       
   137     /**
       
   138      * Reads the next attribute in the stream and returns it as a <code>float</code>
       
   139      * in the Java programming language.
       
   140      *
       
   141      * @return the attribute; if the value is SQL <code>NULL</code>, returns <code>0</code>
       
   142      * @exception SQLException if a database access error occurs
       
   143      * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
       
   144      * this method
       
   145      * @since 1.2
       
   146      */
       
   147     float readFloat() throws SQLException;
       
   148 
       
   149     /**
       
   150      * Reads the next attribute in the stream and returns it as a <code>double</code>
       
   151      * in the Java programming language.
       
   152      *
       
   153      * @return the attribute; if the value is SQL <code>NULL</code>, returns <code>0</code>
       
   154      * @exception SQLException if a database access error occurs
       
   155      * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
       
   156      * this method
       
   157      * @since 1.2
       
   158      */
       
   159     double readDouble() throws SQLException;
       
   160 
       
   161     /**
       
   162      * Reads the next attribute in the stream and returns it as a <code>java.math.BigDecimal</code>
       
   163      * object in the Java programming language.
       
   164      *
       
   165      * @return the attribute; if the value is SQL <code>NULL</code>, returns <code>null</code>
       
   166      * @exception SQLException if a database access error occurs
       
   167      * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
       
   168      * this method
       
   169      * @since 1.2
       
   170      */
       
   171     java.math.BigDecimal readBigDecimal() throws SQLException;
       
   172 
       
   173     /**
       
   174      * Reads the next attribute in the stream and returns it as an array of bytes
       
   175      * in the Java programming language.
       
   176      *
       
   177      * @return the attribute; if the value is SQL <code>NULL</code>, returns <code>null</code>
       
   178      * @exception SQLException if a database access error occurs
       
   179      * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
       
   180      * this method
       
   181      * @since 1.2
       
   182      */
       
   183     byte[] readBytes() throws SQLException;
       
   184 
       
   185     /**
       
   186      * Reads the next attribute in the stream and returns it as a <code>java.sql.Date</code> object.
       
   187      *
       
   188      * @return the attribute; if the value is SQL <code>NULL</code>, returns <code>null</code>
       
   189      * @exception SQLException if a database access error occurs
       
   190      * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
       
   191      * this method
       
   192      * @since 1.2
       
   193      */
       
   194     java.sql.Date readDate() throws SQLException;
       
   195 
       
   196     /**
       
   197      * Reads the next attribute in the stream and returns it as a <code>java.sql.Time</code> object.
       
   198      *
       
   199      * @return the attribute; if the value is SQL <code>NULL</code>, returns <code>null</code>
       
   200      * @exception SQLException if a database access error occurs
       
   201      * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
       
   202      * this method
       
   203      * @since 1.2
       
   204      */
       
   205     java.sql.Time readTime() throws SQLException;
       
   206 
       
   207     /**
       
   208      * Reads the next attribute in the stream and returns it as a <code>java.sql.Timestamp</code> object.
       
   209      *
       
   210      * @return the attribute; if the value is SQL <code>NULL</code>, returns <code>null</code>
       
   211      * @exception SQLException if a database access error occurs
       
   212      * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
       
   213      * this method
       
   214      * @since 1.2
       
   215      */
       
   216     java.sql.Timestamp readTimestamp() throws SQLException;
       
   217 
       
   218     /**
       
   219      * Reads the next attribute in the stream and returns it as a stream of Unicode characters.
       
   220      *
       
   221      * @return the attribute; if the value is SQL <code>NULL</code>, returns <code>null</code>
       
   222      * @exception SQLException if a database access error occurs
       
   223      * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
       
   224      * this method
       
   225      * @since 1.2
       
   226      */
       
   227     java.io.Reader readCharacterStream() throws SQLException;
       
   228 
       
   229     /**
       
   230      * Reads the next attribute in the stream and returns it as a stream of ASCII characters.
       
   231      *
       
   232      * @return the attribute; if the value is SQL <code>NULL</code>, returns <code>null</code>
       
   233      * @exception SQLException if a database access error occurs
       
   234      * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
       
   235      * this method
       
   236      * @since 1.2
       
   237      */
       
   238     java.io.InputStream readAsciiStream() throws SQLException;
       
   239 
       
   240     /**
       
   241      * Reads the next attribute in the stream and returns it as a stream of uninterpreted
       
   242      * bytes.
       
   243      *
       
   244      * @return the attribute; if the value is SQL <code>NULL</code>, returns <code>null</code>
       
   245      * @exception SQLException if a database access error occurs
       
   246      * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
       
   247      * this method
       
   248      * @since 1.2
       
   249      */
       
   250     java.io.InputStream readBinaryStream() throws SQLException;
       
   251 
       
   252     //================================================================
       
   253     // Methods for reading items of SQL user-defined types from the stream.
       
   254     //================================================================
       
   255 
       
   256     /**
       
   257      * Reads the datum at the head of the stream and returns it as an
       
   258      * <code>Object</code> in the Java programming language.  The
       
   259      * actual type of the object returned is determined by the default type
       
   260      * mapping, and any customizations present in this stream's type map.
       
   261      *
       
   262      * <P>A type map is registered with the stream by the JDBC driver before the
       
   263      * stream is passed to the application.
       
   264      *
       
   265      * <P>When the datum at the head of the stream is an SQL <code>NULL</code>,
       
   266      * the method returns <code>null</code>.  If the datum is an SQL structured or distinct
       
   267      * type, it determines the SQL type of the datum at the head of the stream.
       
   268      * If the stream's type map has an entry for that SQL type, the driver
       
   269      * constructs an object of the appropriate class and calls the method
       
   270      * <code>SQLData.readSQL</code> on that object, which reads additional data from the
       
   271      * stream, using the protocol described for that method.
       
   272      *
       
   273      * @return the datum at the head of the stream as an <code>Object</code> in the
       
   274      * Java programming language;<code>null</code> if the datum is SQL <code>NULL</code>
       
   275      * @exception SQLException if a database access error occurs
       
   276      * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
       
   277      * this method
       
   278      * @since 1.2
       
   279      */
       
   280     Object readObject() throws SQLException;
       
   281 
       
   282     /**
       
   283      * Reads an SQL <code>REF</code> value from the stream and returns it as a
       
   284      * <code>Ref</code> object in the Java programming language.
       
   285      *
       
   286      * @return a <code>Ref</code> object representing the SQL <code>REF</code> value
       
   287      * at the head of the stream; <code>null</code> if the value read is
       
   288      * SQL <code>NULL</code>
       
   289      * @exception SQLException if a database access error occurs
       
   290      * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
       
   291      * this method
       
   292      * @since 1.2
       
   293      */
       
   294     Ref readRef() throws SQLException;
       
   295 
       
   296     /**
       
   297      * Reads an SQL <code>BLOB</code> value from the stream and returns it as a
       
   298      * <code>Blob</code> object in the Java programming language.
       
   299      *
       
   300      * @return a <code>Blob</code> object representing data of the SQL <code>BLOB</code> value
       
   301      * at the head of the stream; <code>null</code> if the value read is
       
   302      * SQL <code>NULL</code>
       
   303      * @exception SQLException if a database access error occurs
       
   304      * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
       
   305      * this method
       
   306      * @since 1.2
       
   307      */
       
   308     Blob readBlob() throws SQLException;
       
   309 
       
   310     /**
       
   311      * Reads an SQL <code>CLOB</code> value from the stream and returns it as a
       
   312      * <code>Clob</code> object in the Java programming language.
       
   313      *
       
   314      * @return a <code>Clob</code> object representing data of the SQL <code>CLOB</code> value
       
   315      * at the head of the stream; <code>null</code> if the value read is
       
   316      * SQL <code>NULL</code>
       
   317      * @exception SQLException if a database access error occurs
       
   318      * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
       
   319      * this method
       
   320      * @since 1.2
       
   321      */
       
   322     Clob readClob() throws SQLException;
       
   323 
       
   324     /**
       
   325      * Reads an SQL <code>ARRAY</code> value from the stream and returns it as an
       
   326      * <code>Array</code> object in the Java programming language.
       
   327      *
       
   328      * @return an <code>Array</code> object representing data of the SQL
       
   329      * <code>ARRAY</code> value at the head of the stream; <code>null</code>
       
   330      * if the value read is SQL <code>NULL</code>
       
   331      * @exception SQLException if a database access error occurs
       
   332      * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
       
   333      * this method
       
   334      * @since 1.2
       
   335      */
       
   336     Array readArray() throws SQLException;
       
   337 
       
   338     /**
       
   339      * Retrieves whether the last value read was SQL <code>NULL</code>.
       
   340      *
       
   341      * @return <code>true</code> if the most recently read SQL value was SQL
       
   342      * <code>NULL</code>; <code>false</code> otherwise
       
   343      * @exception SQLException if a database access error occurs
       
   344      *
       
   345      * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
       
   346      * this method
       
   347      * @since 1.2
       
   348      */
       
   349     boolean wasNull() throws SQLException;
       
   350 
       
   351     //---------------------------- JDBC 3.0 -------------------------
       
   352 
       
   353     /**
       
   354      * Reads an SQL <code>DATALINK</code> value from the stream and returns it as a
       
   355      * <code>java.net.URL</code> object in the Java programming language.
       
   356      *
       
   357      * @return a <code>java.net.URL</code> object.
       
   358      * @exception SQLException if a database access error occurs,
       
   359      *            or if a URL is malformed
       
   360      * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
       
   361      * this method
       
   362      * @since 1.4
       
   363      */
       
   364     java.net.URL readURL() throws SQLException;
       
   365 
       
   366      //---------------------------- JDBC 4.0 -------------------------
       
   367 
       
   368     /**
       
   369      * Reads an SQL <code>NCLOB</code> value from the stream and returns it as a
       
   370      * <code>NClob</code> object in the Java programming language.
       
   371      *
       
   372      * @return a <code>NClob</code> object representing data of the SQL <code>NCLOB</code> value
       
   373      * at the head of the stream; <code>null</code> if the value read is
       
   374      * SQL <code>NULL</code>
       
   375      * @exception SQLException if a database access error occurs
       
   376      * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
       
   377      * this method
       
   378      * @since 1.6
       
   379      */
       
   380     NClob readNClob() throws SQLException;
       
   381 
       
   382     /**
       
   383      * Reads the next attribute in the stream and returns it as a <code>String</code>
       
   384      * in the Java programming language. It is intended for use when
       
   385      * accessing  <code>NCHAR</code>,<code>NVARCHAR</code>
       
   386      * and <code>LONGNVARCHAR</code> columns.
       
   387      *
       
   388      * @return the attribute; if the value is SQL <code>NULL</code>, returns <code>null</code>
       
   389      * @exception SQLException if a database access error occurs
       
   390      * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
       
   391      * this method
       
   392      * @since 1.6
       
   393      */
       
   394     String readNString() throws SQLException;
       
   395 
       
   396     /**
       
   397      * Reads an SQL <code>XML</code> value from the stream and returns it as a
       
   398      * <code>SQLXML</code> object in the Java programming language.
       
   399      *
       
   400      * @return a <code>SQLXML</code> object representing data of the SQL <code>XML</code> value
       
   401      * at the head of the stream; <code>null</code> if the value read is
       
   402      * SQL <code>NULL</code>
       
   403      * @exception SQLException if a database access error occurs
       
   404      * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
       
   405      * this method
       
   406      * @since 1.6
       
   407      */
       
   408     SQLXML readSQLXML() throws SQLException;
       
   409 
       
   410     /**
       
   411      * Reads an SQL <code>ROWID</code> value from the stream and returns it as a
       
   412      * <code>RowId</code> object in the Java programming language.
       
   413      *
       
   414      * @return a <code>RowId</code> object representing data of the SQL <code>ROWID</code> value
       
   415      * at the head of the stream; <code>null</code> if the value read is
       
   416      * SQL <code>NULL</code>
       
   417      * @exception SQLException if a database access error occurs
       
   418      * @exception SQLFeatureNotSupportedException if the JDBC driver does not support
       
   419      * this method
       
   420      * @since 1.6
       
   421      */
       
   422     RowId readRowId() throws SQLException;
       
   423 
       
   424 }