Module java.sql
Package java.sql

## Interface SQLOutput

- All Known Implementing Classes:
    `SQLOutputImpl`

      public interface SQLOutput

  The output stream for writing the attributes of a user-defined type back to the database. This interface, used only for custom mapping, is used by the driver, and its methods are never directly invoked by a programmer.

  When an object of a class implementing the interface `SQLData` is passed as an argument to an SQL statement, the JDBC driver calls the method `SQLData.getSQLType` to determine the kind of SQL datum being passed to the database. The driver then creates an instance of `SQLOutput` and passes it to the method `SQLData.writeSQL`. The method `writeSQL` in turn calls the appropriate `SQLOutput` writer methods `writeBoolean`, `writeCharacterStream`, and so on) to write data from the `SQLData` object to the `SQLOutput` output stream as the representation of an SQL user-defined type.

  Since:
    1.2

- - ### Method Summary

    Modifier and Type | Method | Description
    --- | --- | ---
    `void` | `writeArray​(Array x)` | Writes an SQL `ARRAY` value to the stream.
    `void` | `writeAsciiStream​(InputStream x)` | Writes the next attribute to the stream as a stream of ASCII characters.
    `void` | `writeBigDecimal​(BigDecimal x)` | Writes the next attribute to the stream as a java.math.BigDecimal object.
    `void` | `writeBinaryStream​(InputStream x)` | Writes the next attribute to the stream as a stream of uninterpreted bytes.
    `void` | `writeBlob​(Blob x)` | Writes an SQL `BLOB` value to the stream.
    `void` | `writeBoolean​(boolean x)` | Writes the next attribute to the stream as a Java boolean.
    `void` | `writeByte​(byte x)` | Writes the next attribute to the stream as a Java byte.
    `void` | `writeBytes​(byte[] x)` | Writes the next attribute to the stream as an array of bytes.
    `void` | `writeCharacterStream​(Reader x)` | Writes the next attribute to the stream as a stream of Unicode characters.
    `void` | `writeClob​(Clob x)` | Writes an SQL `CLOB` value to the stream.
    `void` | `writeDate​(Date x)` | Writes the next attribute to the stream as a java.sql.Date object.
    `void` | `writeDouble​(double x)` | Writes the next attribute to the stream as a Java double.
    `void` | `writeFloat​(float x)` | Writes the next attribute to the stream as a Java float.
    `void` | `writeInt​(int x)` | Writes the next attribute to the stream as a Java int.
    `void` | `writeLong​(long x)` | Writes the next attribute to the stream as a Java long.
    `void` | `writeNClob​(NClob x)` | Writes an SQL `NCLOB` value to the stream.
    `void` | `writeNString​(String x)` | Writes the next attribute to the stream as a `String` in the Java programming language.
    `default void` | `writeObject​(Object x, SQLType targetSqlType)` | Writes to the stream the data contained in the given object.
    `void` | `writeObject​(SQLData x)` | Writes to the stream the data contained in the given `SQLData` object.
    `void` | `writeRef​(Ref x)` | Writes an SQL `REF` value to the stream.
    `void` | `writeRowId​(RowId x)` | Writes an SQL `ROWID` value to the stream.
    `void` | `writeShort​(short x)` | Writes the next attribute to the stream as a Java short.
    `void` | `writeSQLXML​(SQLXML x)` | Writes an SQL `XML` value to the stream.
    `void` | `writeString​(String x)` | Writes the next attribute to the stream as a `String` in the Java programming language.
    `void` | `writeStruct​(Struct x)` | Writes an SQL structured type value to the stream.
    `void` | `writeTime​(Time x)` | Writes the next attribute to the stream as a java.sql.Time object.
    `void` | `writeTimestamp​(Timestamp x)` | Writes the next attribute to the stream as a java.sql.Timestamp object.
    `void` | `writeURL​(URL x)` | Writes a SQL `DATALINK` value to the stream.

- - ### Method Detail

    - #### writeString

          void writeString​(String x)
                    throws SQLException

      Writes the next attribute to the stream as a `String` in the Java programming language.
      Parameters:
        `x` - the value to pass to the database
      Throws:
        `SQLException` - if a database access error occurs
        `SQLFeatureNotSupportedException` - if the JDBC driver does not support this method
      Since:
        1.2

    - #### writeBoolean

          void writeBoolean​(boolean x)
                     throws SQLException

      Writes the next attribute to the stream as a Java boolean. Writes the next attribute to the stream as a `String` in the Java programming language.
      Parameters:
        `x` - the value to pass to the database
      Throws:
        `SQLException` - if a database access error occurs
        `SQLFeatureNotSupportedException` - if the JDBC driver does not support this method
      Since:
        1.2

    - #### writeByte

          void writeByte​(byte x)
                  throws SQLException

      Writes the next attribute to the stream as a Java byte. Writes the next attribute to the stream as a `String` in the Java programming language.
      Parameters:
        `x` - the value to pass to the database
      Throws:
        `SQLException` - if a database access error occurs
        `SQLFeatureNotSupportedException` - if the JDBC driver does not support this method
      Since:
        1.2

    - #### writeShort

          void writeShort​(short x)
                   throws SQLException

      Writes the next attribute to the stream as a Java short. Writes the next attribute to the stream as a `String` in the Java programming language.
      Parameters:
        `x` - the value to pass to the database
      Throws:
        `SQLException` - if a database access error occurs
        `SQLFeatureNotSupportedException` - if the JDBC driver does not support this method
      Since:
        1.2

    - #### writeInt

          void writeInt​(int x)
                 throws SQLException

      Writes the next attribute to the stream as a Java int. Writes the next attribute to the stream as a `String` in the Java programming language.
      Parameters:
        `x` - the value to pass to the database
      Throws:
        `SQLException` - if a database access error occurs
        `SQLFeatureNotSupportedException` - if the JDBC driver does not support this method
      Since:
        1.2

    - #### writeLong

          void writeLong​(long x)
                  throws SQLException

      Writes the next attribute to the stream as a Java long. Writes the next attribute to the stream as a `String` in the Java programming language.
      Parameters:
        `x` - the value to pass to the database
      Throws:
        `SQLException` - if a database access error occurs
        `SQLFeatureNotSupportedException` - if the JDBC driver does not support this method
      Since:
        1.2

    - #### writeFloat

          void writeFloat​(float x)
                   throws SQLException

      Writes the next attribute to the stream as a Java float. Writes the next attribute to the stream as a `String` in the Java programming language.
      Parameters:
        `x` - the value to pass to the database
      Throws:
        `SQLException` - if a database access error occurs
        `SQLFeatureNotSupportedException` - if the JDBC driver does not support this method
      Since:
        1.2

    - #### writeDouble

          void writeDouble​(double x)
                    throws SQLException

      Writes the next attribute to the stream as a Java double. Writes the next attribute to the stream as a `String` in the Java programming language.
      Parameters:
        `x` - the value to pass to the database
      Throws:
        `SQLException` - if a database access error occurs
        `SQLFeatureNotSupportedException` - if the JDBC driver does not support this method
      Since:
        1.2

    - #### writeBigDecimal

          void writeBigDecimal​(BigDecimal x)
                        throws SQLException

      Writes the next attribute to the stream as a java.math.BigDecimal object. Writes the next attribute to the stream as a `String` in the Java programming language.
      Parameters:
        `x` - the value to pass to the database
      Throws:
        `SQLException` - if a database access error occurs
        `SQLFeatureNotSupportedException` - if the JDBC driver does not support this method
      Since:
        1.2

    - #### writeBytes

          void writeBytes​(byte[] x)
                   throws SQLException

      Writes the next attribute to the stream as an array of bytes. Writes the next attribute to the stream as a `String` in the Java programming language.
      Parameters:
        `x` - the value to pass to the database
      Throws:
        `SQLException` - if a database access error occurs
        `SQLFeatureNotSupportedException` - if the JDBC driver does not support this method
      Since:
        1.2

    - #### writeDate

          void writeDate​(Date x)
                  throws SQLException

      Writes the next attribute to the stream as a java.sql.Date object. Writes the next attribute to the stream as a `java.sql.Date` object in the Java programming language.
      Parameters:
        `x` - the value to pass to the database
      Throws:
        `SQLException` - if a database access error occurs
        `SQLFeatureNotSupportedException` - if the JDBC driver does not support this method
      Since:
        1.2

    - #### writeTime

          void writeTime​(Time x)
                  throws SQLException

      Writes the next attribute to the stream as a java.sql.Time object. Writes the next attribute to the stream as a `java.sql.Date` object in the Java programming language.
      Parameters:
        `x` - the value to pass to the database
      Throws:
        `SQLException` - if a database access error occurs
        `SQLFeatureNotSupportedException` - if the JDBC driver does not support this method
      Since:
        1.2

    - #### writeTimestamp

          void writeTimestamp​(Timestamp x)
                       throws SQLException

      Writes the next attribute to the stream as a java.sql.Timestamp object. Writes the next attribute to the stream as a `java.sql.Date` object in the Java programming language.
      Parameters:
        `x` - the value to pass to the database
      Throws:
        `SQLException` - if a database access error occurs
        `SQLFeatureNotSupportedException` - if the JDBC driver does not support this method
      Since:
        1.2

    - #### writeCharacterStream

          void writeCharacterStream​(Reader x)
                             throws SQLException

      Writes the next attribute to the stream as a stream of Unicode characters.
      Parameters:
        `x` - the value to pass to the database
      Throws:
        `SQLException` - if a database access error occurs
        `SQLFeatureNotSupportedException` - if the JDBC driver does not support this method
      Since:
        1.2

    - #### writeAsciiStream

          void writeAsciiStream​(InputStream x)
                         throws SQLException

      Writes the next attribute to the stream as a stream of ASCII characters.
      Parameters:
        `x` - the value to pass to the database
      Throws:
        `SQLException` - if a database access error occurs
        `SQLFeatureNotSupportedException` - if the JDBC driver does not support this method
      Since:
        1.2

    - #### writeBinaryStream

          void writeBinaryStream​(InputStream x)
                          throws SQLException

      Writes the next attribute to the stream as a stream of uninterpreted bytes.
      Parameters:
        `x` - the value to pass to the database
      Throws:
        `SQLException` - if a database access error occurs
        `SQLFeatureNotSupportedException` - if the JDBC driver does not support this method
      Since:
        1.2

    - #### writeObject

          void writeObject​(SQLData x)
                    throws SQLException

      Writes to the stream the data contained in the given `SQLData` object. When the `SQLData` object is `null`, this method writes an SQL `NULL` to the stream. Otherwise, it calls the `SQLData.writeSQL` method of the given object, which writes the object's attributes to the stream. The implementation of the method `SQLData.writeSQL` calls the appropriate `SQLOutput` writer method(s) for writing each of the object's attributes in order. The attributes must be read from an `SQLInput` input stream and written to an `SQLOutput` output stream in the same order in which they were listed in the SQL definition of the user-defined type.
      Parameters:
        `x` - the object representing data of an SQL structured or distinct type
      Throws:
        `SQLException` - if a database access error occurs
        `SQLFeatureNotSupportedException` - if the JDBC driver does not support this method
      Since:
        1.2

    - #### writeRef

          void writeRef​(Ref x)
                 throws SQLException

      Writes an SQL `REF` value to the stream.
      Parameters:
        `x` - a `Ref` object representing data of an SQL `REF` value
      Throws:
        `SQLException` - if a database access error occurs
        `SQLFeatureNotSupportedException` - if the JDBC driver does not support this method
      Since:
        1.2

    - #### writeBlob

          void writeBlob​(Blob x)
                  throws SQLException

      Writes an SQL `BLOB` value to the stream.
      Parameters:
        `x` - a `Blob` object representing data of an SQL `BLOB` value
      Throws:
        `SQLException` - if a database access error occurs
        `SQLFeatureNotSupportedException` - if the JDBC driver does not support this method
      Since:
        1.2

    - #### writeClob

          void writeClob​(Clob x)
                  throws SQLException

      Writes an SQL `CLOB` value to the stream.
      Parameters:
        `x` - a `Clob` object representing data of an SQL `CLOB` value
      Throws:
        `SQLException` - if a database access error occurs
        `SQLFeatureNotSupportedException` - if the JDBC driver does not support this method
      Since:
        1.2

    - #### writeStruct

          void writeStruct​(Struct x)
                    throws SQLException

      Writes an SQL structured type value to the stream.
      Parameters:
        `x` - a `Struct` object representing data of an SQL structured type
      Throws:
        `SQLException` - if a database access error occurs
        `SQLFeatureNotSupportedException` - if the JDBC driver does not support this method
      Since:
        1.2

    - #### writeArray

          void writeArray​(Array x)
                   throws SQLException

      Writes an SQL `ARRAY` value to the stream.
      Parameters:
        `x` - an `Array` object representing data of an SQL `ARRAY` type
      Throws:
        `SQLException` - if a database access error occurs
        `SQLFeatureNotSupportedException` - if the JDBC driver does not support this method
      Since:
        1.2

    - #### writeURL

          void writeURL​(URL x)
                 throws SQLException

      Writes a SQL `DATALINK` value to the stream.
      Parameters:
        `x` - a `java.net.URL` object representing the data of SQL DATALINK type
      Throws:
        `SQLException` - if a database access error occurs
        `SQLFeatureNotSupportedException` - if the JDBC driver does not support this method
      Since:
        1.4

    - #### writeNString

          void writeNString​(String x)
                     throws SQLException

      Writes the next attribute to the stream as a `String` in the Java programming language. The driver converts this to a SQL `NCHAR` or `NVARCHAR` or `LONGNVARCHAR` value (depending on the argument's size relative to the driver's limits on `NVARCHAR` values) when it sends it to the stream.
      Parameters:
        `x` - the value to pass to the database
      Throws:
        `SQLException` - if a database access error occurs
        `SQLFeatureNotSupportedException` - if the JDBC driver does not support this method
      Since:
        1.6

    - #### writeNClob

          void writeNClob​(NClob x)
                   throws SQLException

      Writes an SQL `NCLOB` value to the stream.
      Parameters:
        `x` - a `NClob` object representing data of an SQL `NCLOB` value
      Throws:
        `SQLException` - if a database access error occurs
        `SQLFeatureNotSupportedException` - if the JDBC driver does not support this method
      Since:
        1.6

    - #### writeRowId

          void writeRowId​(RowId x)
                   throws SQLException

      Writes an SQL `ROWID` value to the stream.
      Parameters:
        `x` - a `RowId` object representing data of an SQL `ROWID` value
      Throws:
        `SQLException` - if a database access error occurs
        `SQLFeatureNotSupportedException` - if the JDBC driver does not support this method
      Since:
        1.6

    - #### writeSQLXML

          void writeSQLXML​(SQLXML x)
                    throws SQLException

      Writes an SQL `XML` value to the stream.
      Parameters:
        `x` - a `SQLXML` object representing data of an SQL `XML` value
      Throws:
        `SQLException` - if a database access error occurs, the `java.xml.transform.Result`, `Writer` or `OutputStream` has not been closed for the `SQLXML` object or if there is an error processing the XML value. The `getCause` method of the exception may provide a more detailed exception, for example, if the stream does not contain valid XML.
        `SQLFeatureNotSupportedException` - if the JDBC driver does not support this method
      Since:
        1.6

    - #### writeObject

          default void writeObject​(Object x,
                                   SQLType targetSqlType)
                            throws SQLException

      Writes to the stream the data contained in the given object. The object will be converted to the specified targetSqlType before being sent to the stream.

      When the `object` is `null`, this method writes an SQL `NULL` to the stream.

      If the object has a custom mapping (is of a class implementing the interface `SQLData`), the JDBC driver should call the method `SQLData.writeSQL` to write it to the SQL data stream. If, on the other hand, the object is of a class implementing `Ref`, `Blob`, `Clob`, `NClob`, `Struct`, `java.net.URL`, or `Array`, the driver should pass it to the database as a value of the corresponding SQL type.

      The default implementation will throw `SQLFeatureNotSupportedException`

      Parameters:
        `x` - the object containing the input parameter value
        `targetSqlType` - the SQL type to be sent to the database.
      Throws:
        `SQLException` - if a database access error occurs or if the Java Object specified by x is an InputStream or Reader object and the value of the scale parameter is less than zero
        `SQLFeatureNotSupportedException` - if the JDBC driver does not support this data type
      Since:
        1.8
      See Also:
        `JDBCType`, `SQLType`