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 Details

  - ### 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`