/* * Copyright (c) 1998, 2006, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. Oracle designates this * particular file as subject to the "Classpath" exception as provided * by Oracle in the LICENSE file that accompanied this code. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * version 2 for more details (a copy is included in the LICENSE file that * accompanied this code). * * You should have received a copy of the GNU General Public License version * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA * or visit www.oracle.com if you need additional information or have any * questions. */ package java.sql; /** * 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
*/
public interface SQLOutput {
//================================================================
// Methods for writing attributes to the stream of SQL data.
// These methods correspond to the column-accessor methods of
// java.sql.ResultSet.
//================================================================
/**
* Writes the next attribute to the stream as a String
* in the Java programming language.
*
* @param x the value to pass to the database
* @exception SQLException if a database access error occurs
* @exception SQLFeatureNotSupportedException if the JDBC driver does not support
* this method
* @since 1.2
*/
void writeString(String 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.
*
* @param x the value to pass to the database
* @exception SQLException if a database access error occurs
* @exception SQLFeatureNotSupportedException if the JDBC driver does not support
* this method
* @since 1.2
*/
void writeBoolean(boolean 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.
*
* @param x the value to pass to the database
* @exception SQLException if a database access error occurs
* @exception SQLFeatureNotSupportedException if the JDBC driver does not support
* this method
* @since 1.2
*/
void writeByte(byte 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.
*
* @param x the value to pass to the database
* @exception SQLException if a database access error occurs
* @exception SQLFeatureNotSupportedException if the JDBC driver does not support
* this method
* @since 1.2
*/
void writeShort(short 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.
*
* @param x the value to pass to the database
* @exception SQLException if a database access error occurs
* @exception SQLFeatureNotSupportedException if the JDBC driver does not support
* this method
* @since 1.2
*/
void writeInt(int 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.
*
* @param x the value to pass to the database
* @exception SQLException if a database access error occurs
* @exception SQLFeatureNotSupportedException if the JDBC driver does not support
* this method
* @since 1.2
*/
void writeLong(long 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.
*
* @param x the value to pass to the database
* @exception SQLException if a database access error occurs
* @exception SQLFeatureNotSupportedException if the JDBC driver does not support
* this method
* @since 1.2
*/
void writeFloat(float 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.
*
* @param x the value to pass to the database
* @exception SQLException if a database access error occurs
* @exception SQLFeatureNotSupportedException if the JDBC driver does not support
* this method
* @since 1.2
*/
void writeDouble(double 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.
*
* @param x the value to pass to the database
* @exception SQLException if a database access error occurs
* @exception SQLFeatureNotSupportedException if the JDBC driver does not support
* this method
* @since 1.2
*/
void writeBigDecimal(java.math.BigDecimal 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.
*
* @param x the value to pass to the database
* @exception SQLException if a database access error occurs
* @exception SQLFeatureNotSupportedException if the JDBC driver does not support
* this method
* @since 1.2
*/
void writeBytes(byte[] 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.
*
* @param x the value to pass to the database
* @exception SQLException if a database access error occurs
* @exception SQLFeatureNotSupportedException if the JDBC driver does not support
* this method
* @since 1.2
*/
void writeDate(java.sql.Date 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.
*
* @param x the value to pass to the database
* @exception SQLException if a database access error occurs
* @exception SQLFeatureNotSupportedException if the JDBC driver does not support
* this method
* @since 1.2
*/
void writeTime(java.sql.Time 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.
*
* @param x the value to pass to the database
* @exception SQLException if a database access error occurs
* @exception SQLFeatureNotSupportedException if the JDBC driver does not support
* this method
* @since 1.2
*/
void writeTimestamp(java.sql.Timestamp x) throws SQLException;
/**
* Writes the next attribute to the stream as a stream of Unicode characters.
*
* @param x the value to pass to the database
* @exception SQLException if a database access error occurs
* @exception SQLFeatureNotSupportedException if the JDBC driver does not support
* this method
* @since 1.2
*/
void writeCharacterStream(java.io.Reader x) throws SQLException;
/**
* Writes the next attribute to the stream as a stream of ASCII characters.
*
* @param x the value to pass to the database
* @exception SQLException if a database access error occurs
* @exception SQLFeatureNotSupportedException if the JDBC driver does not support
* this method
* @since 1.2
*/
void writeAsciiStream(java.io.InputStream x) throws SQLException;
/**
* Writes the next attribute to the stream as a stream of uninterpreted
* bytes.
*
* @param x the value to pass to the database
* @exception SQLException if a database access error occurs
* @exception SQLFeatureNotSupportedException if the JDBC driver does not support
* this method
* @since 1.2
*/
void writeBinaryStream(java.io.InputStream x) throws SQLException;
//================================================================
// Methods for writing items of SQL user-defined types to the stream.
// These methods pass objects to the database as values of SQL
// Structured Types, Distinct Types, Constructed Types, and Locator
// Types. They decompose the Java object(s) and write leaf data
// items using the methods above.
//================================================================
/**
* 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.writeSQ
* 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.
*
* @param x the object representing data of an SQL structured or
* distinct type
* @exception SQLException if a database access error occurs
* @exception SQLFeatureNotSupportedException if the JDBC driver does not support
* this method
* @since 1.2
*/
void writeObject(SQLData x) throws SQLException;
/**
* Writes an SQL REF
value to the stream.
*
* @param x a Ref
object representing data of an SQL
* REF
value
* @exception SQLException if a database access error occurs
* @exception SQLFeatureNotSupportedException if the JDBC driver does not support
* this method
* @since 1.2
*/
void writeRef(Ref x) throws SQLException;
/**
* Writes an SQL BLOB
value to the stream.
*
* @param x a Blob
object representing data of an SQL
* BLOB
value
*
* @exception SQLException if a database access error occurs
* @exception SQLFeatureNotSupportedException if the JDBC driver does not support
* this method
* @since 1.2
*/
void writeBlob(Blob x) throws SQLException;
/**
* Writes an SQL CLOB
value to the stream.
*
* @param x a Clob
object representing data of an SQL
* CLOB
value
*
* @exception SQLException if a database access error occurs
* @exception SQLFeatureNotSupportedException if the JDBC driver does not support
* this method
* @since 1.2
*/
void writeClob(Clob x) throws SQLException;
/**
* Writes an SQL structured type value to the stream.
*
* @param x a Struct
object representing data of an SQL
* structured type
*
* @exception SQLException if a database access error occurs
* @exception SQLFeatureNotSupportedException if the JDBC driver does not support
* this method
* @since 1.2
*/
void writeStruct(Struct x) throws SQLException;
/**
* Writes an SQL ARRAY
value to the stream.
*
* @param x an Array
object representing data of an SQL
* ARRAY
type
*
* @exception SQLException if a database access error occurs
* @exception SQLFeatureNotSupportedException if the JDBC driver does not support
* this method
* @since 1.2
*/
void writeArray(Array x) throws SQLException;
//--------------------------- JDBC 3.0 ------------------------
/**
* Writes a SQL DATALINK
value to the stream.
*
* @param x a java.net.URL
object representing the data
* of SQL DATALINK type
*
* @exception SQLException if a database access error occurs
* @exception SQLFeatureNotSupportedException if the JDBC driver does not support
* this method
* @since 1.4
*/
void writeURL(java.net.URL x) throws SQLException;
//--------------------------- JDBC 4.0 ------------------------
/**
* 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.
*
* @param x the value to pass to the database
* @exception SQLException if a database access error occurs
* @exception SQLFeatureNotSupportedException if the JDBC driver does not support
* this method
* @since 1.6
*/
void writeNString(String x) throws SQLException;
/**
* Writes an SQL NCLOB
value to the stream.
*
* @param x a NClob
object representing data of an SQL
* NCLOB
value
*
* @exception SQLException if a database access error occurs
* @exception SQLFeatureNotSupportedException if the JDBC driver does not support
* this method
* @since 1.6
*/
void writeNClob(NClob x) throws SQLException;
/**
* Writes an SQL ROWID
value to the stream.
*
* @param x a RowId
object representing data of an SQL
* ROWID
value
*
* @exception SQLException if a database access error occurs
* @exception SQLFeatureNotSupportedException if the JDBC driver does not support
* this method
* @since 1.6
*/
void writeRowId(RowId x) throws SQLException;
/**
* Writes an SQL XML
value to the stream.
*
* @param 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.
* @exception SQLFeatureNotSupportedException if the JDBC driver does not support
* this method
* @since 1.6
*/
void writeSQLXML(SQLXML x) throws SQLException;
}