All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.drizzle.jdbc.DrizzleResultSet Maven / Gradle / Ivy

There is a newer version: 1.4
Show newest version
/*
 * Drizzle-JDBC
 *
 * Copyright (c) 2009-2011, Marcus Eriksson
 *
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following
 * conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following
 *   disclaimer in the documentation and/or other materials provided with the distribution.
 *  Neither the name of the driver nor the names of its contributors may be used to endorse or promote products derived
 *   from this software without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
 * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
 * EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
 * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */

package org.drizzle.jdbc;

import org.drizzle.jdbc.internal.SQLExceptionMapper;
import org.drizzle.jdbc.internal.common.*;
import org.drizzle.jdbc.internal.common.queryresults.DrizzleQueryResult;
import org.drizzle.jdbc.internal.common.queryresults.NoSuchColumnException;
import org.drizzle.jdbc.internal.common.queryresults.QueryResult;
import org.drizzle.jdbc.internal.common.queryresults.ResultSetType;
import org.drizzle.jdbc.internal.common.queryresults.SelectQueryResult;

import java.io.IOException;
import java.io.InputStream;
import java.io.Reader;
import java.io.StringReader;
import java.math.BigDecimal;
import java.net.MalformedURLException;
import java.net.URL;
import java.sql.Array;
import java.sql.Blob;
import java.sql.Clob;
import java.sql.Date;
import java.sql.Ref;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.SQLWarning;
import java.sql.Statement;
import java.sql.Time;
import java.sql.Timestamp;
import java.text.ParseException;
import java.util.Calendar;
import java.util.Collections;
import java.util.List;
import java.util.Map;

/**
 * . User: marcuse Date: Jan 19, 2009 Time: 10:25:00 PM
 */
public class DrizzleResultSet implements ResultSet {

    public final static DrizzleResultSet EMPTY = createEmptyResultSet();
    private final QueryResult queryResult;
    private final Statement statement;
    private final Protocol protocol;
    // dont want these, but jdbc forces them with "lastGetWasNull" etc...
    private boolean isClosed;
    private boolean lastGetWasNull;

    public DrizzleResultSet(final QueryResult dqr, final Statement statement, final Protocol protocol) {
        this.queryResult = dqr;
        this.statement = statement;
        isClosed = false;
        this.protocol = protocol;
    }

    private static DrizzleResultSet createEmptyResultSet() {
        final List colList = Collections.emptyList();
        final List> voList = Collections.emptyList();
        final QueryResult qr = new DrizzleQueryResult(colList, voList, (short) 0);
        return new DrizzleResultSet(qr, null, null);
    }

    public boolean next() throws SQLException {
        return queryResult.getResultSetType() == ResultSetType.SELECT
                && ((SelectQueryResult) queryResult).next();
    }

    public void close() throws SQLException {
        this.isClosed = true;
        if (this.queryResult != null) {
            this.queryResult.close();
        }
    }

    /**
     * Reports whether the last column read had a value of SQL NULL. Note that you must first call one of
     * the getter methods on a column to try to read its value and then call the method wasNull to see if
     * the value read was SQL NULL.
     *
     * @return true if the last column value read was SQL NULL and false
     *         otherwise
     * @throws java.sql.SQLException if a database access error occurs or this method is called on a closed result set
     */
    public boolean wasNull() throws SQLException {
        return lastGetWasNull;
    }


    public String getString(final int i) throws SQLException {
        return getValueObject(i).getString();
    }

    public int getInt(final int i) throws SQLException {
        return getValueObject(i).getInt();
    }

    public int getInt(final String s) throws SQLException {
        return getValueObject(s).getInt();
    }

    private ValueObject getValueObject(final int i) throws SQLException {
        if (queryResult.getResultSetType() == ResultSetType.SELECT) {
            final ValueObject vo;
            try {
                vo = ((SelectQueryResult) queryResult).getValueObject(i - 1);
            } catch (NoSuchColumnException e) {
                throw SQLExceptionMapper.getSQLException("No such column: " + i, e);
            }
            this.lastGetWasNull = vo.isNull();
            return vo;
        }
        throw SQLExceptionMapper.getSQLException("Cannot get data from update-result sets");
    }

    private ValueObject getValueObject(final String column) throws SQLException {
        if (queryResult.getResultSetType() == ResultSetType.SELECT) {
            final ValueObject vo;
            try {
                vo = ((SelectQueryResult) queryResult).getValueObject(column);
            } catch (NoSuchColumnException e) {
                throw SQLExceptionMapper.getSQLException("No such column: " + column, e);
            }
            this.lastGetWasNull = vo.isNull();
            return vo;
        }
        throw SQLExceptionMapper.getSQLException("Cannot get data from update-result sets");
    }

    /**
     * Retrieves the value of the designated column in the current row of this ResultSet object as a
     * long in the Java programming language.
     *
     * @param columnLabel the label for the column specified with the SQL AS clause.  If the SQL AS clause was not
     *                    specified, then the label is the name of the column
     * @return the column value; if the value is SQL NULL, the value returned is 0
     * @throws java.sql.SQLException if the columnLabel is not valid; if a database access error occurs or this method
     *                               is called on a closed result set
     */
    public long getLong(final String columnLabel) throws SQLException {
        return getValueObject(columnLabel).getLong();
    }

    /**
     * Retrieves the value of the designated column in the current row of this ResultSet object as a
     * float in the Java programming language.
     *
     * @param columnLabel the label for the column specified with the SQL AS clause.  If the SQL AS clause was not
     *                    specified, then the label is the name of the column
     * @return the column value; if the value is SQL NULL, the value returned is 0
     * @throws java.sql.SQLException if the columnLabel is not valid; if a database access error occurs or this method
     *                               is called on a closed result set
     */
    public float getFloat(final String columnLabel) throws SQLException {
        return getValueObject(columnLabel).getFloat();
    }

    /**
     * Retrieves the value of the designated column in the current row of this ResultSet object as a
     * double in the Java programming language.
     *
     * @param columnLabel the label for the column specified with the SQL AS clause.  If the SQL AS clause was not
     *                    specified, then the label is the name of the column
     * @return the column value; if the value is SQL NULL, the value returned is 0
     * @throws java.sql.SQLException if the columnLabel is not valid; if a database access error occurs or this method
     *                               is called on a closed result set
     */
    public double getDouble(final String columnLabel) throws SQLException {
        return getValueObject(columnLabel).getDouble();
    }

    /**
     * Retrieves the value of the designated column in the current row of this ResultSet object as a
     * java.math.BigDecimal in the Java programming language.
     *
     * @param columnLabel the label for the column specified with the SQL AS clause.  If the SQL AS clause was not
     *                    specified, then the label is the name of the column
     * @param scale       the number of digits to the right of the decimal point
     * @return the column value; if the value is SQL NULL, the value returned is null
     * @throws java.sql.SQLException if the columnLabel is not valid; if a database access error occurs or this method
     *                               is called on a closed result set
     * @throws java.sql.SQLFeatureNotSupportedException
     *                               if the JDBC driver does not support this method
     * @deprecated
     */
    public BigDecimal getBigDecimal(final String columnLabel, final int scale) throws SQLException {
        return getValueObject(columnLabel).getBigDecimal();
    }

    /**
     * Retrieves the value of the designated column in the current row of this ResultSet object as a
     * byte array in the Java programming language. The bytes represent the raw values returned by the
     * driver.
     *
     * @param columnLabel the label for the column specified with the SQL AS clause.  If the SQL AS clause was not
     *                    specified, then the label is the name of the column
     * @return the column value; if the value is SQL NULL, the value returned is null
     * @throws java.sql.SQLException if the columnLabel is not valid; if a database access error occurs or this method
     *                               is called on a closed result set
     */
    public byte[] getBytes(final String columnLabel) throws SQLException {
        return getValueObject(columnLabel).getBytes();
    }

    /**
     * Retrieves the value of the designated column in the current row of this ResultSet object as a
     * java.sql.Date object in the Java programming language.
     *
     * @param columnLabel the label for the column specified with the SQL AS clause.  If the SQL AS clause was not
     *                    specified, then the label is the name of the column
     * @return the column value; if the value is SQL NULL, the value returned is null
     * @throws java.sql.SQLException if the columnLabel is not valid; if a database access error occurs or this method
     *                               is called on a closed result set
     */
    public Date getDate(final String columnLabel) throws SQLException {
        try {
            return getValueObject(columnLabel).getDate();
        } catch (ParseException e) {
            throw SQLExceptionMapper.getSQLException("Could not parse date", e);
        }
    }

    /**
     * Retrieves the value of the designated column in the current row of this ResultSet object as a
     * java.sql.Time object in the Java programming language.
     *
     * @param columnLabel the label for the column specified with the SQL AS clause.  If the SQL AS clause was not
     *                    specified, then the label is the name of the column
     * @return the column value; if the value is SQL NULL, the value returned is null
     * @throws java.sql.SQLException if the columnLabel is not valid; if a database access error occurs or this method
     *                               is called on a closed result set
     */
    public Time getTime(final String columnLabel) throws SQLException {
        try {
            return getValueObject(columnLabel).getTime();
        } catch (ParseException e) {
            throw SQLExceptionMapper.getSQLException("Could not parse column as time, was: \"" +
                    getValueObject(columnLabel).getString() +
                    "\"", e);
        }
    }

    /**
     * Retrieves the value of the designated column in the current row of this ResultSet object as a
     * java.sql.Timestamp object in the Java programming language.
     *
     * @param columnLabel the label for the column specified with the SQL AS clause.  If the SQL AS clause was not
     *                    specified, then the label is the name of the column
     * @return the column value; if the value is SQL NULL, the value returned is null
     * @throws java.sql.SQLException if the columnLabel is not valid; if a database access error occurs or this method
     *                               is called on a closed result set
     */
    public Timestamp getTimestamp(final String columnLabel) throws SQLException {
        try {
            return getValueObject(columnLabel).getTimestamp();
        } catch (ParseException e) {
            throw SQLExceptionMapper.getSQLException("Could not parse column as timestamp, was: \"" +
                    getValueObject(columnLabel).getString() +
                    "\"", e);
        }
    }

    /**
     * Retrieves the value of the designated column in the current row of this ResultSet object as a stream
     * of ASCII characters. The value can then be read in chunks from the stream. This method is particularly suitable
     * for retrieving large LONGVARCHAR values. The JDBC driver will do any necessary conversion from the
     * database format into ASCII.
     * 

*

Note: All the data in the returned stream must be read prior to getting the value of any other column. * The next call to a getter method implicitly closes the stream. Also, a stream may return 0 when the * method available is called whether there is data available or not. * * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not * specified, then the label is the name of the column * @return a Java input stream that delivers the database column value as a stream of one-byte ASCII characters. If * the value is SQL NULL, the value returned is null. * @throws java.sql.SQLException if the columnLabel is not valid; if a database access error occurs or this method * is called on a closed result set */ public InputStream getAsciiStream(final String columnLabel) throws SQLException { return getValueObject(columnLabel).getInputStream(); } /** * Retrieves the value of the designated column in the current row of this ResultSet object as a stream * of two-byte Unicode characters. The first byte is the high byte; the second byte is the low byte. *

* The value can then be read in chunks from the stream. This method is particularly suitable for retrieving large * LONGVARCHAR values. The JDBC technology-enabled driver will do any necessary conversion from the * database format into Unicode. *

*

Note: All the data in the returned stream must be read prior to getting the value of any other column. * The next call to a getter method implicitly closes the stream. Also, a stream may return 0 when the * method InputStream.available is called, whether there is data available or not. * * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not * specified, then the label is the name of the column * @return a Java input stream that delivers the database column value as a stream of two-byte Unicode characters. * If the value is SQL NULL, the value returned is null. * @throws java.sql.SQLException if the columnLabel is not valid; if a database access error occurs or this method * is called on a closed result set * @throws java.sql.SQLFeatureNotSupportedException * if the JDBC driver does not support this method * @deprecated use getCharacterStream instead */ public InputStream getUnicodeStream(final String columnLabel) throws SQLException { return getValueObject(columnLabel).getInputStream(); } /** * Retrieves the value of the designated column in the current row of this ResultSet object as a stream * of uninterpreted bytes. The value can then be read in chunks from the stream. This method is * particularly suitable for retrieving large LONGVARBINARY values. *

*

Note: All the data in the returned stream must be read prior to getting the value of any other column. * The next call to a getter method implicitly closes the stream. Also, a stream may return 0 when the * method available is called whether there is data available or not. * * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not * specified, then the label is the name of the column * @return a Java input stream that delivers the database column value as a stream of uninterpreted bytes; if the * value is SQL NULL, the result is null * @throws java.sql.SQLException if the columnLabel is not valid; if a database access error occurs or this method * is called on a closed result set */ public InputStream getBinaryStream(final String columnLabel) throws SQLException { if(protocol.supportsPBMS()) { try { return getValueObject(columnLabel).getPBMSStream(protocol); } catch (QueryException e) { throw SQLExceptionMapper.get(e); } catch (IOException e) { throw SQLExceptionMapper.getSQLException("Could not read back the data using http", e); } } else { return getValueObject(columnLabel).getBinaryInputStream(); } } /** * Retrieves the first warning reported by calls on this ResultSet object. Subsequent warnings on this * ResultSet object will be chained to the SQLWarning object that this method returns. *

*

The warning chain is automatically cleared each time a new row is read. This method may not be called on a * ResultSet object that has been closed; doing so will cause an SQLException to be * thrown. *

* Note: This warning chain only covers warnings caused by ResultSet methods. Any warning * caused by Statement methods (such as reading OUT parameters) will be chained on the * Statement object. * * @return the first SQLWarning object reported or null if there are none * @throws java.sql.SQLException if a database access error occurs or this method is called on a closed result set */ public SQLWarning getWarnings() throws SQLException { return new SQLWarning(String.valueOf(queryResult.getWarnings()) + " warning(s)"); } /** * Clears all warnings reported on this ResultSet object. After this method is called, the method * getWarnings returns null until a new warning is reported for this * ResultSet object. * * @throws java.sql.SQLException if a database access error occurs or this method is called on a closed result set */ public void clearWarnings() throws SQLException { //TODO: implement! } /** * Retrieves the name of the SQL cursor used by this ResultSet object. *

*

In SQL, a result table is retrieved through a cursor that is named. The current row of a result set can be * updated or deleted using a positioned update/delete statement that references the cursor name. To insure that the * cursor has the proper isolation level to support update, the cursor's SELECT statement should be of * the form SELECT FOR UPDATE. If FOR UPDATE is omitted, the positioned updates may fail. *

*

The JDBC API supports this SQL feature by providing the name of the SQL cursor used by a * ResultSet object. The current row of a ResultSet object is also the current row of this * SQL cursor. * * @return the SQL name for this ResultSet object's cursor * @throws java.sql.SQLException if a database access error occurs or this method is called on a closed result set * @throws java.sql.SQLFeatureNotSupportedException * if the JDBC driver does not support this method */ public String getCursorName() throws SQLException { throw SQLExceptionMapper.getFeatureNotSupportedException("Cursors not supported"); } /** * Retrieves the number, types and properties of this ResultSet object's columns. * * @return the description of this ResultSet object's columns * @throws java.sql.SQLException if a database access error occurs or this method is called on a closed result set */ public ResultSetMetaData getMetaData() throws SQLException { return new DrizzleResultSetMetaData(queryResult.getColumnInformation()); } /** *

Gets the value of the designated column in the current row of this ResultSet object as an * Object in the Java programming language. *

*

This method will return the value of the given column as a Java object. The type of the Java object will be * the default Java object type corresponding to the column's SQL type, following the mapping for built-in types * specified in the JDBC specification. If the value is an SQL NULL, the driver returns a Java * null. *

*

This method may also be used to read database-specific abstract data types. *

* In the JDBC 2.0 API, the behavior of method getObject is extended to materialize data of SQL * user-defined types. *

* If Connection.getTypeMap does not throw a SQLFeatureNotSupportedException, then when a * column contains a structured or distinct value, the behavior of this method is as if it were a call to: * getObject(columnIndex, this.getStatement().getConnection().getTypeMap()). *

* If Connection.getTypeMap does throw a SQLFeatureNotSupportedException, then structured * values are not supported, and distinct values are mapped to the default Java class as determined by the * underlying SQL type of the DISTINCT type. * * @param columnIndex the first column is 1, the second is 2, ... * @return a java.lang.Object holding the column value * @throws java.sql.SQLException if the columnIndex is not valid; if a database access error occurs or this method * is called on a closed result set */ public Object getObject(final int columnIndex) throws SQLException { try { return getValueObject(columnIndex).getObject(); } catch (ParseException e) { throw SQLExceptionMapper.getSQLException("Could not get object: " + e.getMessage(), e); } } /** *

Gets the value of the designated column in the current row of this ResultSet object. * @param columnIndex the first column is 1, the second is 2, ... * @param type The Java object type of the column to be retrieved. * @return an object of the specified type holding the column value * @throws java.sql.SQLException if the columnIndex is not valid; if a database access error occurs or this method * is called on a closed result set */ public T getObject(final int columnIndex, Class type) throws SQLException { return (T)(getObject(columnIndex)); } /** *

Gets the value of the designated column in the current row of this ResultSet object as an * Object in the Java programming language. *

*

This method will return the value of the given column as a Java object. The type of the Java object will be * the default Java object type corresponding to the column's SQL type, following the mapping for built-in types * specified in the JDBC specification. If the value is an SQL NULL, the driver returns a Java * null. *

* This method may also be used to read database-specific abstract data types. *

* In the JDBC 2.0 API, the behavior of the method getObject is extended to materialize data of SQL * user-defined types. When a column contains a structured or distinct value, the behavior of this method is as if * it were a call to: getObject(columnIndex, this.getStatement().getConnection().getTypeMap()). * * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not * specified, then the label is the name of the column * @return a java.lang.Object holding the column value * @throws java.sql.SQLException if the columnLabel is not valid; if a database access error occurs or this method * is called on a closed result set */ public Object getObject(final String columnLabel) throws SQLException { try { return getValueObject(columnLabel).getObject(); } catch (ParseException e) { throw SQLExceptionMapper.getSQLException("Could not get object: " + e.getMessage(), e); } } /** *

Gets the value of the designated column in the current row of this ResultSet object. * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not * @param type The Java object type of the column to be retrieved. * @return an object of the specified type holding the column value * @throws java.sql.SQLException if the columnIndex is not valid; if a database access error occurs or this method * is called on a closed result set */ public T getObject(final String columnLabel, Class type) throws SQLException { return (T)(getObject(columnLabel)); } /** * Maps the given ResultSet column label to its ResultSet column index. * * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not * specified, then the label is the name of the column * @return the column index of the given column name * @throws java.sql.SQLException if the ResultSet object does not contain a column labeled * columnLabel, a database access error occurs or this method is called * on a closed result set */ public int findColumn(final String columnLabel) throws SQLException { if (this.queryResult.getResultSetType() == ResultSetType.SELECT) { try { return ((SelectQueryResult) queryResult).getColumnId(columnLabel) + 1; } catch (NoSuchColumnException e) { throw SQLExceptionMapper.getSQLException("No such column: " + columnLabel, e); } } throw SQLExceptionMapper.getSQLException("Cannot get column id of update result sets"); } /** * Retrieves the value of the designated column in the current row of this ResultSet object as a * java.io.Reader object. * * @param columnIndex the first column is 1, the second is 2, ... * @return a java.io.Reader object that contains the column value; if the value is SQL * NULL, the value returned is null in the Java programming language. * @throws java.sql.SQLException if the columnIndex is not valid; if a database access error occurs or this method * is called on a closed result set * @since 1.2 */ public Reader getCharacterStream(final int columnIndex) throws SQLException { return new StringReader(getValueObject(columnIndex).getString()); } /** * Retrieves the value of the designated column in the current row of this ResultSet object as a * java.io.Reader object. * * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not * specified, then the label is the name of the column * @return a java.io.Reader object that contains the column value; if the value is SQL * NULL, the value returned is null in the Java programming language * @throws java.sql.SQLException if the columnLabel is not valid; if a database access error occurs or this method * is called on a closed result set * @since 1.2 */ public Reader getCharacterStream(final String columnLabel) throws SQLException { return new StringReader(getValueObject(columnLabel).getString()); } /** * Retrieves the value of the designated column in the current row of this ResultSet object as a * java.math.BigDecimal with full precision. * * @param columnIndex the first column is 1, the second is 2, ... * @return the column value (full precision); if the value is SQL NULL, the value returned is * null in the Java programming language. * @throws java.sql.SQLException if the columnIndex is not valid; if a database access error occurs or this method * is called on a closed result set * @since 1.2 */ public BigDecimal getBigDecimal(final int columnIndex) throws SQLException { return getValueObject(columnIndex).getBigDecimal(); } /** * Retrieves the value of the designated column in the current row of this ResultSet object as a * java.math.BigDecimal with full precision. * * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not * specified, then the label is the name of the column * @return the column value (full precision); if the value is SQL NULL, the value returned is * null in the Java programming language. * @throws java.sql.SQLException if the columnLabel is not valid; if a database access error occurs or this method * is called on a closed result set * @since 1.2 */ public BigDecimal getBigDecimal(final String columnLabel) throws SQLException { return getValueObject(columnLabel).getBigDecimal(); } /** * Retrieves whether the cursor is before the first row in this ResultSet object. *

* Note:Support for the isBeforeFirst method is optional for ResultSets * with a result set type of TYPE_FORWARD_ONLY * * @return true if the cursor is before the first row; false if the cursor is at any other * position or the result set contains no rows * @throws java.sql.SQLException if a database access error occurs or this method is called on a closed result set * @throws java.sql.SQLFeatureNotSupportedException * if the JDBC driver does not support this method * @since 1.2 */ public boolean isBeforeFirst() throws SQLException { return !(queryResult.getResultSetType() == ResultSetType.MODIFY || queryResult.getRows() == 0) && ((SelectQueryResult) queryResult).getRowPointer() == -1; } /** * Retrieves whether the cursor is after the last row in this ResultSet object. *

* Note:Support for the isAfterLast method is optional for ResultSets * with a result set type of TYPE_FORWARD_ONLY * * @return true if the cursor is after the last row; false if the cursor is at any other * position or the result set contains no rows * @throws java.sql.SQLException if a database access error occurs or this method is called on a closed result set * @throws java.sql.SQLFeatureNotSupportedException * if the JDBC driver does not support this method * @since 1.2 */ public boolean isAfterLast() throws SQLException { return queryResult.getResultSetType() != ResultSetType.MODIFY && ((SelectQueryResult) queryResult).getRowPointer() >= queryResult.getRows(); } /** * Retrieves whether the cursor is on the first row of this ResultSet object. *

* Note:Support for the isFirst method is optional for ResultSets with a * result set type of TYPE_FORWARD_ONLY * * @return true if the cursor is on the first row; false otherwise * @throws java.sql.SQLException if a database access error occurs or this method is called on a closed result set * @throws java.sql.SQLFeatureNotSupportedException * if the JDBC driver does not support this method * @since 1.2 */ public boolean isFirst() throws SQLException { return queryResult.getResultSetType() != ResultSetType.MODIFY && ((SelectQueryResult) queryResult).getRowPointer() == 0; } /** * Retrieves whether the cursor is on the last row of this ResultSet object. Note: * Calling the method isLast may be expensive because the JDBC driver might need to fetch ahead one row * in order to determine whether the current row is the last row in the result set. *

* Note: Support for the isLast method is optional for ResultSets with a * result set type of TYPE_FORWARD_ONLY * * @return true if the cursor is on the last row; false otherwise * @throws java.sql.SQLException if a database access error occurs or this method is called on a closed result set * @throws java.sql.SQLFeatureNotSupportedException * if the JDBC driver does not support this method * @since 1.2 */ public boolean isLast() throws SQLException { return queryResult.getResultSetType() != ResultSetType.MODIFY && ((SelectQueryResult) queryResult).getRowPointer() == queryResult.getRows() - 1; } /** * Moves the cursor to the front of this ResultSet object, just before the first row. This method has * no effect if the result set contains no rows. * * @throws java.sql.SQLException if a database access error occurs; this method is called on a closed result set or * the result set type is TYPE_FORWARD_ONLY * @throws java.sql.SQLFeatureNotSupportedException * if the JDBC driver does not support this method * @since 1.2 */ public void beforeFirst() throws SQLException { if (queryResult.getResultSetType() == ResultSetType.SELECT) { ((SelectQueryResult) queryResult).moveRowPointerTo(-1); } } /** * Moves the cursor to the end of this ResultSet object, just after the last row. This method has no * effect if the result set contains no rows. * * @throws java.sql.SQLException if a database access error occurs; this method is called on a closed result set or * the result set type is TYPE_FORWARD_ONLY * @throws java.sql.SQLFeatureNotSupportedException * if the JDBC driver does not support this method * @since 1.2 */ public void afterLast() throws SQLException { throw SQLExceptionMapper.getFeatureNotSupportedException("Cannot move after last row"); } /** * Moves the cursor to the first row in this ResultSet object. * * @return true if the cursor is on a valid row; false if there are no rows in the result * set * @throws java.sql.SQLException if a database access error occurs; this method is called on a closed result set or * the result set type is TYPE_FORWARD_ONLY * @throws java.sql.SQLFeatureNotSupportedException * if the JDBC driver does not support this method * @since 1.2 */ public boolean first() throws SQLException { if (queryResult.getResultSetType() == ResultSetType.SELECT && queryResult.getRows() > 0) { ((SelectQueryResult) queryResult).moveRowPointerTo(0); return true; } return false; } /** * Moves the cursor to the last row in this ResultSet object. * * @return true if the cursor is on a valid row; false if there are no rows in the result * set * @throws java.sql.SQLException if a database access error occurs; this method is called on a closed result set or * the result set type is TYPE_FORWARD_ONLY * @throws java.sql.SQLFeatureNotSupportedException * if the JDBC driver does not support this method * @since 1.2 */ public boolean last() throws SQLException { if (queryResult.getResultSetType() == ResultSetType.SELECT && queryResult.getRows() > 0) { ((SelectQueryResult) queryResult).moveRowPointerTo(queryResult.getRows() - 1); return true; } return false; } /** * Retrieves the current row number. The first row is number 1, the second number 2, and so on. *

* Note:Support for the getRow method is optional for ResultSets with a * result set type of TYPE_FORWARD_ONLY * * @return the current row number; 0 if there is no current row * @throws java.sql.SQLException if a database access error occurs or this method is called on a closed result set * @throws java.sql.SQLFeatureNotSupportedException * if the JDBC driver does not support this method * @since 1.2 */ public int getRow() throws SQLException { if (queryResult.getResultSetType() == ResultSetType.SELECT) { return ((SelectQueryResult) queryResult).getRowPointer() + 1;//+1 since first row is 1, not 0 } return 0; } /** * Moves the cursor to the given row number in this ResultSet object. *

*

If the row number is positive, the cursor moves to the given row number with respect to the beginning of the * result set. The first row is row 1, the second is row 2, and so on. *

*

If the given row number is negative, the cursor moves to an absolute row position with respect to the end of * the result set. For example, calling the method absolute(-1) positions the cursor on the last row; * calling the method absolute(-2) moves the cursor to the next-to-last row, and so on. *

*

An attempt to position the cursor beyond the first/last row in the result set leaves the cursor before the * first row or after the last row. *

*

Note: Calling absolute(1) is the same as calling first(). Calling * absolute(-1) is the same as calling last(). * * @param row the number of the row to which the cursor should move. A positive number indicates the row number * counting from the beginning of the result set; a negative number indicates the row number counting * from the end of the result set * @return true if the cursor is moved to a position in this ResultSet object; * false if the cursor is before the first row or after the last row * @throws java.sql.SQLException if a database access error occurs; this method is called on a closed result set or * the result set type is TYPE_FORWARD_ONLY * @throws java.sql.SQLFeatureNotSupportedException * if the JDBC driver does not support this method * @since 1.2 */ public boolean absolute(final int row) throws SQLException { if (queryResult.getResultSetType() != ResultSetType.SELECT) { return false; } final SelectQueryResult sqr = (SelectQueryResult) queryResult; if (sqr.getRows() > 0) { if (row >= 0 && row <= sqr.getRows()) { sqr.moveRowPointerTo(row - 1); return true; } if (row < 0) { sqr.moveRowPointerTo(sqr.getRows() + row); } return true; } return false; } /** * Moves the cursor a relative number of rows, either positive or negative. Attempting to move beyond the first/last * row in the result set positions the cursor before/after the the first/last row. Calling relative(0) * is valid, but does not change the cursor position. *

*

Note: Calling the method relative(1) is identical to calling the method next() and * calling the method relative(-1) is identical to calling the method previous(). * * @param rows an int specifying the number of rows to move from the current row; a positive number * moves the cursor forward; a negative number moves the cursor backward * @return true if the cursor is on a row; false otherwise * @throws java.sql.SQLException if a database access error occurs; this method is called on a closed result set or * the result set type is TYPE_FORWARD_ONLY * @throws java.sql.SQLFeatureNotSupportedException * if the JDBC driver does not support this method * @since 1.2 */ public boolean relative(final int rows) throws SQLException { if (queryResult.getResultSetType() != ResultSetType.SELECT) { return false; } final SelectQueryResult sqr = (SelectQueryResult) queryResult; if (queryResult.getRows() > 0) { final int newPos = sqr.getRowPointer() + rows; if (newPos > -1 && newPos <= queryResult.getRows()) { sqr.moveRowPointerTo(newPos); return true; } } return false; } /** * Moves the cursor to the previous row in this ResultSet object. *

* When a call to the previous method returns false, the cursor is positioned before the * first row. Any invocation of a ResultSet method which requires a current row will result in a * SQLException being thrown. *

* If an input stream is open for the current row, a call to the method previous will implicitly close * it. A ResultSet object's warning change is cleared when a new row is read. *

* * @return true if the cursor is now positioned on a valid row; false if the cursor is * positioned before the first row * @throws java.sql.SQLException if a database access error occurs; this method is called on a closed result set or * the result set type is TYPE_FORWARD_ONLY * @throws java.sql.SQLFeatureNotSupportedException * if the JDBC driver does not support this method * @since 1.2 */ public boolean previous() throws SQLException { if (queryResult.getResultSetType() != ResultSetType.SELECT) { return false; } final SelectQueryResult sqr = (SelectQueryResult) queryResult; if (sqr.getRows() >= 0) { sqr.moveRowPointerTo(sqr.getRowPointer() - 1); return true; } return false; } /** * Gives a hint as to the direction in which the rows in this ResultSet object will be processed. The * initial value is determined by the Statement object that produced this ResultSet * object. The fetch direction may be changed at any time. * * @param direction an int specifying the suggested fetch direction; one of * ResultSet.FETCH_FORWARD, ResultSet.FETCH_REVERSE, or * ResultSet.FETCH_UNKNOWN * @throws java.sql.SQLException if a database access error occurs; this method is called on a closed result set or * the result set type is TYPE_FORWARD_ONLY and the fetch direction is * not FETCH_FORWARD * @see java.sql.Statement#setFetchDirection * @see #getFetchDirection * @since 1.2 */ public void setFetchDirection(final int direction) throws SQLException { // todo: ignored for now } /** * Retrieves the fetch direction for this ResultSet object. * * @return the current fetch direction for this ResultSet object * @throws java.sql.SQLException if a database access error occurs or this method is called on a closed result set * @see #setFetchDirection * @since 1.2 */ public int getFetchDirection() throws SQLException { return ResultSet.FETCH_UNKNOWN; } /** * Gives the JDBC driver a hint as to the number of rows that should be fetched from the database when more rows are * needed for this ResultSet object. If the fetch size specified is zero, the JDBC driver ignores the * value and is free to make its own best guess as to what the fetch size should be. The default value is set by * the Statement object that created the result set. The fetch size may be changed at any time. * * @param rows the number of rows to fetch * @throws java.sql.SQLException if a database access error occurs; this method is called on a closed result set or * the condition rows >= 0 is not satisfied * @see #getFetchSize * @since 1.2 */ public void setFetchSize(final int rows) throws SQLException { // ignored - we fetch 'em all! } /** * Retrieves the fetch size for this ResultSet object. * * @return the current fetch size for this ResultSet object * @throws java.sql.SQLException if a database access error occurs or this method is called on a closed result set * @see #setFetchSize * @since 1.2 */ public int getFetchSize() throws SQLException { return 0; } /** * Retrieves the type of this ResultSet object. The type is determined by the Statement * object that created the result set. * * @return ResultSet.TYPE_FORWARD_ONLY, ResultSet.TYPE_SCROLL_INSENSITIVE, or * ResultSet.TYPE_SCROLL_SENSITIVE * @throws java.sql.SQLException if a database access error occurs or this method is called on a closed result set * @since 1.2 */ public int getType() throws SQLException { return ResultSet.TYPE_SCROLL_INSENSITIVE; } /** * Retrieves the concurrency mode of this ResultSet object. The concurrency used is determined by the * Statement object that created the result set. * * @return the concurrency type, either ResultSet.CONCUR_READ_ONLY or * ResultSet.CONCUR_UPDATABLE * @throws java.sql.SQLException if a database access error occurs or this method is called on a closed result set * @since 1.2 */ public int getConcurrency() throws SQLException { return ResultSet.CONCUR_READ_ONLY; } /** * Retrieves whether the current row has been updated. The value returned depends on whether or not the result set * can detect updates. *

* Note: Support for the rowUpdated method is optional with a result set concurrency * of CONCUR_READ_ONLY * * @return true if the current row is detected to have been visibly updated by the owner or another; * false otherwise * @throws java.sql.SQLException if a database access error occurs or this method is called on a closed result set * @throws java.sql.SQLFeatureNotSupportedException * if the JDBC driver does not support this method * @see java.sql.DatabaseMetaData#updatesAreDetected * @since 1.2 */ public boolean rowUpdated() throws SQLException { throw SQLExceptionMapper.getFeatureNotSupportedException("Detecting row updates are not supported"); } /** * Retrieves whether the current row has had an insertion. The value returned depends on whether or not this * ResultSet object can detect visible inserts. *

* Note: Support for the rowInserted method is optional with a result set concurrency * of CONCUR_READ_ONLY * * @return true if the current row is detected to have been inserted; false otherwise * @throws java.sql.SQLException if a database access error occurs or this method is called on a closed result set * @throws java.sql.SQLFeatureNotSupportedException * if the JDBC driver does not support this method * @see java.sql.DatabaseMetaData#insertsAreDetected * @since 1.2 */ public boolean rowInserted() throws SQLException { throw SQLExceptionMapper.getFeatureNotSupportedException("Detecting inserts are not supported"); } /** * Retrieves whether a row has been deleted. A deleted row may leave a visible "hole" in a result set. This method * can be used to detect holes in a result set. The value returned depends on whether or not this * ResultSet object can detect deletions. *

* Note: Support for the rowDeleted method is optional with a result set concurrency * of CONCUR_READ_ONLY * * @return true if the current row is detected to have been deleted by the owner or another; * false otherwise * @throws java.sql.SQLException if a database access error occurs or this method is called on a closed result set * @throws java.sql.SQLFeatureNotSupportedException * if the JDBC driver does not support this method * @see java.sql.DatabaseMetaData#deletesAreDetected * @since 1.2 */ public boolean rowDeleted() throws SQLException { throw SQLExceptionMapper.getFeatureNotSupportedException("Row deletes are not supported"); } /** * Updates the designated column with a null value. *

* The updater methods are used to update column values in the current row or the insert row. The updater methods * do not update the underlying database; instead the updateRow or insertRow methods are * called to update the database. * * @param columnIndex the first column is 1, the second is 2, ... * @throws java.sql.SQLException if the columnIndex is not valid; if a database access error occurs; the result set * concurrency is CONCUR_READ_ONLY or this method is called on a closed * result set * @throws java.sql.SQLFeatureNotSupportedException * if the JDBC driver does not support this method * @since 1.2 */ public void updateNull(final int columnIndex) throws SQLException { throw SQLExceptionMapper.getFeatureNotSupportedException("Updates are not supported"); } /** * Updates the designated column with a boolean value. The updater methods are used to update column * values in the current row or the insert row. The updater methods do not update the underlying database; instead * the updateRow or insertRow methods are called to update the database. * * @param columnIndex the first column is 1, the second is 2, ... * @param x the new column value * @throws java.sql.SQLException if the columnIndex is not valid; if a database access error occurs; the result set * concurrency is CONCUR_READ_ONLY or this method is called on a closed * result set * @throws java.sql.SQLFeatureNotSupportedException * if the JDBC driver does not support this method * @since 1.2 */ public void updateBoolean(final int columnIndex, final boolean x) throws SQLException { throw SQLExceptionMapper.getFeatureNotSupportedException("Updates are not supported"); } /** * Updates the designated column with a byte value. The updater methods are used to update column * values in the current row or the insert row. The updater methods do not update the underlying database; instead * the updateRow or insertRow methods are called to update the database. * * @param columnIndex the first column is 1, the second is 2, ... * @param x the new column value * @throws java.sql.SQLException if the columnIndex is not valid; if a database access error occurs; the result set * concurrency is CONCUR_READ_ONLY or this method is called on a closed * result set * @throws java.sql.SQLFeatureNotSupportedException * if the JDBC driver does not support this method * @since 1.2 */ public void updateByte(final int columnIndex, final byte x) throws SQLException { throw SQLExceptionMapper.getFeatureNotSupportedException("Updates are not supported"); } /** * Updates the designated column with a short value. The updater methods are used to update column * values in the current row or the insert row. The updater methods do not update the underlying database; instead * the updateRow or insertRow methods are called to update the database. * * @param columnIndex the first column is 1, the second is 2, ... * @param x the new column value * @throws java.sql.SQLException if the columnIndex is not valid; if a database access error occurs; the result set * concurrency is CONCUR_READ_ONLY or this method is called on a closed * result set * @throws java.sql.SQLFeatureNotSupportedException * if the JDBC driver does not support this method * @since 1.2 */ public void updateShort(final int columnIndex, final short x) throws SQLException { throw SQLExceptionMapper.getFeatureNotSupportedException("Updates are not supported"); } /** * Updates the designated column with an int value. The updater methods are used to update column * values in the current row or the insert row. The updater methods do not update the underlying database; instead * the updateRow or insertRow methods are called to update the database. * * @param columnIndex the first column is 1, the second is 2, ... * @param x the new column value * @throws java.sql.SQLException if the columnIndex is not valid; if a database access error occurs; the result set * concurrency is CONCUR_READ_ONLY or this method is called on a closed * result set * @throws java.sql.SQLFeatureNotSupportedException * if the JDBC driver does not support this method * @since 1.2 */ public void updateInt(final int columnIndex, final int x) throws SQLException { throw SQLExceptionMapper.getFeatureNotSupportedException("Updates are not supported"); } /** * Updates the designated column with a long value. The updater methods are used to update column * values in the current row or the insert row. The updater methods do not update the underlying database; instead * the updateRow or insertRow methods are called to update the database. * * @param columnIndex the first column is 1, the second is 2, ... * @param x the new column value * @throws java.sql.SQLException if the columnIndex is not valid; if a database access error occurs; the result set * concurrency is CONCUR_READ_ONLY or this method is called on a closed * result set * @throws java.sql.SQLFeatureNotSupportedException * if the JDBC driver does not support this method * @since 1.2 */ public void updateLong(final int columnIndex, final long x) throws SQLException { throw SQLExceptionMapper.getFeatureNotSupportedException("Updates are not supported"); } /** * Updates the designated column with a float value. The updater methods are used to update column * values in the current row or the insert row. The updater methods do not update the underlying database; instead * the updateRow or insertRow methods are called to update the database. * * @param columnIndex the first column is 1, the second is 2, ... * @param x the new column value * @throws java.sql.SQLException if the columnIndex is not valid; if a database access error occurs; the result set * concurrency is CONCUR_READ_ONLY or this method is called on a closed * result set * @throws java.sql.SQLFeatureNotSupportedException * if the JDBC driver does not support this method * @since 1.2 */ public void updateFloat(final int columnIndex, final float x) throws SQLException { throw SQLExceptionMapper.getFeatureNotSupportedException("Updates are not supported"); } /** * Updates the designated column with a double value. The updater methods are used to update column * values in the current row or the insert row. The updater methods do not update the underlying database; instead * the updateRow or insertRow methods are called to update the database. * * @param columnIndex the first column is 1, the second is 2, ... * @param x the new column value * @throws java.sql.SQLException if the columnIndex is not valid; if a database access error occurs; the result set * concurrency is CONCUR_READ_ONLY or this method is called on a closed * result set * @throws java.sql.SQLFeatureNotSupportedException * if the JDBC driver does not support this method * @since 1.2 */ public void updateDouble(final int columnIndex, final double x) throws SQLException { throw SQLExceptionMapper.getFeatureNotSupportedException("Updates are not supported"); } /** * Updates the designated column with a java.math.BigDecimal value. The updater methods are used to * update column values in the current row or the insert row. The updater methods do not update the underlying * database; instead the updateRow or insertRow methods are called to update the * database. * * @param columnIndex the first column is 1, the second is 2, ... * @param x the new column value * @throws java.sql.SQLException if the columnIndex is not valid; if a database access error occurs; the result set * concurrency is CONCUR_READ_ONLY or this method is called on a closed * result set * @throws java.sql.SQLFeatureNotSupportedException * if the JDBC driver does not support this method * @since 1.2 */ public void updateBigDecimal(final int columnIndex, final BigDecimal x) throws SQLException { throw SQLExceptionMapper.getFeatureNotSupportedException("Updates are not supported"); } /** * Updates the designated column with a String value. The updater methods are used to update column * values in the current row or the insert row. The updater methods do not update the underlying database; instead * the updateRow or insertRow methods are called to update the database. * * @param columnIndex the first column is 1, the second is 2, ... * @param x the new column value * @throws java.sql.SQLException if the columnIndex is not valid; if a database access error occurs; the result set * concurrency is CONCUR_READ_ONLY or this method is called on a closed * result set * @throws java.sql.SQLFeatureNotSupportedException * if the JDBC driver does not support this method * @since 1.2 */ public void updateString(final int columnIndex, final String x) throws SQLException { throw SQLExceptionMapper.getFeatureNotSupportedException("Updates are not supported"); } /** * Updates the designated column with a byte array value. The updater methods are used to update column * values in the current row or the insert row. The updater methods do not update the underlying database; instead * the updateRow or insertRow methods are called to update the database. * * @param columnIndex the first column is 1, the second is 2, ... * @param x the new column value * @throws java.sql.SQLException if the columnIndex is not valid; if a database access error occurs; the result set * concurrency is CONCUR_READ_ONLY or this method is called on a closed * result set * @throws java.sql.SQLFeatureNotSupportedException * if the JDBC driver does not support this method * @since 1.2 */ public void updateBytes(final int columnIndex, final byte[] x) throws SQLException { throw SQLExceptionMapper.getFeatureNotSupportedException("Updates are not supported"); } /** * Updates the designated column with a java.sql.Date value. The updater methods are used to update * column values in the current row or the insert row. The updater methods do not update the underlying database; * instead the updateRow or insertRow methods are called to update the database. * * @param columnIndex the first column is 1, the second is 2, ... * @param x the new column value * @throws java.sql.SQLException if the columnIndex is not valid; if a database access error occurs; the result set * concurrency is CONCUR_READ_ONLY or this method is called on a closed * result set * @throws java.sql.SQLFeatureNotSupportedException * if the JDBC driver does not support this method * @since 1.2 */ public void updateDate(final int columnIndex, final Date x) throws SQLException { throw SQLExceptionMapper.getFeatureNotSupportedException("Updates are not supported"); } /** * Updates the designated column with a java.sql.Time value. The updater methods are used to update * column values in the current row or the insert row. The updater methods do not update the underlying database; * instead the updateRow or insertRow methods are called to update the database. * * @param columnIndex the first column is 1, the second is 2, ... * @param x the new column value * @throws java.sql.SQLException if the columnIndex is not valid; if a database access error occurs; the result set * concurrency is CONCUR_READ_ONLY or this method is called on a closed * result set * @throws java.sql.SQLFeatureNotSupportedException * if the JDBC driver does not support this method * @since 1.2 */ public void updateTime(final int columnIndex, final Time x) throws SQLException { throw SQLExceptionMapper.getFeatureNotSupportedException("Updates are not supported"); } /** * Updates the designated column with a java.sql.Timestamp value. The updater methods are used to * update column values in the current row or the insert row. The updater methods do not update the underlying * database; instead the updateRow or insertRow methods are called to update the * database. * * @param columnIndex the first column is 1, the second is 2, ... * @param x the new column value * @throws java.sql.SQLException if the columnIndex is not valid; if a database access error occurs; the result set * concurrency is CONCUR_READ_ONLY or this method is called on a closed * result set * @throws java.sql.SQLFeatureNotSupportedException * if the JDBC driver does not support this method * @since 1.2 */ public void updateTimestamp(final int columnIndex, final Timestamp x) throws SQLException { throw SQLExceptionMapper.getFeatureNotSupportedException("Updates are not supported"); } /** * Updates the designated column with an ascii stream value, which will have the specified number of bytes. The * updater methods are used to update column values in the current row or the insert row. The updater methods do * not update the underlying database; instead the updateRow or insertRow methods are * called to update the database. * * @param columnIndex the first column is 1, the second is 2, ... * @param x the new column value * @param length the length of the stream * @throws java.sql.SQLException if the columnIndex is not valid; if a database access error occurs; the result set * concurrency is CONCUR_READ_ONLY or this method is called on a closed * result set * @throws java.sql.SQLFeatureNotSupportedException * if the JDBC driver does not support this method * @since 1.2 */ public void updateAsciiStream(final int columnIndex, final InputStream x, final int length) throws SQLException { throw SQLExceptionMapper.getFeatureNotSupportedException("Updates are not supported"); } /** * Updates the designated column with a binary stream value, which will have the specified number of bytes. The * updater methods are used to update column values in the current row or the insert row. The updater methods do * not update the underlying database; instead the updateRow or insertRow methods are * called to update the database. * * @param columnIndex the first column is 1, the second is 2, ... * @param x the new column value * @param length the length of the stream * @throws java.sql.SQLException if the columnIndex is not valid; if a database access error occurs; the result set * concurrency is CONCUR_READ_ONLY or this method is called on a closed * result set * @throws java.sql.SQLFeatureNotSupportedException * if the JDBC driver does not support this method * @since 1.2 */ public void updateBinaryStream(final int columnIndex, final InputStream x, final int length) throws SQLException { throw SQLExceptionMapper.getFeatureNotSupportedException("Updates are not supported"); } /** * Updates the designated column with a character stream value, which will have the specified number of bytes. The * updater methods are used to update column values in the current row or the insert row. The updater methods do * not update the underlying database; instead the updateRow or insertRow methods are * called to update the database. * * @param columnIndex the first column is 1, the second is 2, ... * @param x the new column value * @param length the length of the stream * @throws java.sql.SQLException if the columnIndex is not valid; if a database access error occurs; the result set * concurrency is CONCUR_READ_ONLY or this method is called on a closed * result set * @throws java.sql.SQLFeatureNotSupportedException * if the JDBC driver does not support this method * @since 1.2 */ public void updateCharacterStream(final int columnIndex, final Reader x, final int length) throws SQLException { throw SQLExceptionMapper.getFeatureNotSupportedException("Updates are not supported"); } /** * Updates the designated column with an Object value. The updater methods are used to update column * values in the current row or the insert row. The updater methods do not update the underlying database; instead * the updateRow or insertRow methods are called to update the database. *

* If the second argument is an InputStream then the stream must contain the number of bytes specified * by scaleOrLength. If the second argument is a Reader then the reader must contain the number of * characters specified by scaleOrLength. If these conditions are not true the driver will generate a * SQLException when the statement is executed. * * @param columnIndex the first column is 1, the second is 2, ... * @param x the new column value * @param scaleOrLength for an object of java.math.BigDecimal , this is the number of digits after the * decimal point. For Java Object types InputStream and Reader, this * is the length of the data in the stream or reader. For all other types, this value will be * ignored. * @throws java.sql.SQLException if the columnIndex is not valid; if a database access error occurs; the result set * concurrency is CONCUR_READ_ONLY or this method is called on a closed * result set * @throws java.sql.SQLFeatureNotSupportedException * if the JDBC driver does not support this method * @since 1.2 */ public void updateObject(final int columnIndex, final Object x, final int scaleOrLength) throws SQLException { throw SQLExceptionMapper.getFeatureNotSupportedException("Updates are not supported"); } /** * Updates the designated column with an Object value. The updater methods are used to update column * values in the current row or the insert row. The updater methods do not update the underlying database; instead * the updateRow or insertRow methods are called to update the database. * * @param columnIndex the first column is 1, the second is 2, ... * @param x the new column value * @throws java.sql.SQLException if the columnIndex is not valid; if a database access error occurs; the result set * concurrency is CONCUR_READ_ONLY or this method is called on a closed * result set * @throws java.sql.SQLFeatureNotSupportedException * if the JDBC driver does not support this method * @since 1.2 */ public void updateObject(final int columnIndex, final Object x) throws SQLException { throw SQLExceptionMapper.getFeatureNotSupportedException("Updates are not supported"); } /** * Updates the designated column with a null value. The updater methods are used to update column * values in the current row or the insert row. The updater methods do not update the underlying database; instead * the updateRow or insertRow methods are called to update the database. * * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not * specified, then the label is the name of the column * @throws java.sql.SQLException if the columnLabel is not valid; if a database access error occurs; the result set * concurrency is CONCUR_READ_ONLY or this method is called on a closed * result set * @throws java.sql.SQLFeatureNotSupportedException * if the JDBC driver does not support this method * @since 1.2 */ public void updateNull(final String columnLabel) throws SQLException { throw SQLExceptionMapper.getFeatureNotSupportedException("Updates are not supported"); } /** * Updates the designated column with a boolean value. The updater methods are used to update column * values in the current row or the insert row. The updater methods do not update the underlying database; instead * the updateRow or insertRow methods are called to update the database. * * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not * specified, then the label is the name of the column * @param x the new column value * @throws java.sql.SQLException if the columnLabel is not valid; if a database access error occurs; the result set * concurrency is CONCUR_READ_ONLY or this method is called on a closed * result set * @throws java.sql.SQLFeatureNotSupportedException * if the JDBC driver does not support this method * @since 1.2 */ public void updateBoolean(final String columnLabel, final boolean x) throws SQLException { throw SQLExceptionMapper.getFeatureNotSupportedException("Updates are not supported"); } /** * Updates the designated column with a byte value. The updater methods are used to update column * values in the current row or the insert row. The updater methods do not update the underlying database; instead * the updateRow or insertRow methods are called to update the database. * * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not * specified, then the label is the name of the column * @param x the new column value * @throws java.sql.SQLException if the columnLabel is not valid; if a database access error occurs; the result set * concurrency is CONCUR_READ_ONLY or this method is called on a closed * result set * @throws java.sql.SQLFeatureNotSupportedException * if the JDBC driver does not support this method * @since 1.2 */ public void updateByte(final String columnLabel, final byte x) throws SQLException { throw SQLExceptionMapper.getFeatureNotSupportedException("Updates are not supported"); } /** * Updates the designated column with a short value. The updater methods are used to update column * values in the current row or the insert row. The updater methods do not update the underlying database; instead * the updateRow or insertRow methods are called to update the database. * * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not * specified, then the label is the name of the column * @param x the new column value * @throws java.sql.SQLException if the columnLabel is not valid; if a database access error occurs; the result set * concurrency is CONCUR_READ_ONLY or this method is called on a closed * result set * @throws java.sql.SQLFeatureNotSupportedException * if the JDBC driver does not support this method * @since 1.2 */ public void updateShort(final String columnLabel, final short x) throws SQLException { throw SQLExceptionMapper.getFeatureNotSupportedException("Updates are not supported"); } /** * Updates the designated column with an int value. The updater methods are used to update column * values in the current row or the insert row. The updater methods do not update the underlying database; instead * the updateRow or insertRow methods are called to update the database. * * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not * specified, then the label is the name of the column * @param x the new column value * @throws java.sql.SQLException if the columnLabel is not valid; if a database access error occurs; the result set * concurrency is CONCUR_READ_ONLY or this method is called on a closed * result set * @throws java.sql.SQLFeatureNotSupportedException * if the JDBC driver does not support this method * @since 1.2 */ public void updateInt(final String columnLabel, final int x) throws SQLException { throw SQLExceptionMapper.getFeatureNotSupportedException("Updates are not supported"); } /** * Updates the designated column with a long value. The updater methods are used to update column * values in the current row or the insert row. The updater methods do not update the underlying database; instead * the updateRow or insertRow methods are called to update the database. * * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not * specified, then the label is the name of the column * @param x the new column value * @throws java.sql.SQLException if the columnLabel is not valid; if a database access error occurs; the result set * concurrency is CONCUR_READ_ONLY or this method is called on a closed * result set * @throws java.sql.SQLFeatureNotSupportedException * if the JDBC driver does not support this method * @since 1.2 */ public void updateLong(final String columnLabel, final long x) throws SQLException { throw SQLExceptionMapper.getFeatureNotSupportedException("Updates are not supported"); } /** * Updates the designated column with a float value. The updater methods are used to update column * values in the current row or the insert row. The updater methods do not update the underlying database; instead * the updateRow or insertRow methods are called to update the database. * * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not * specified, then the label is the name of the column * @param x the new column value * @throws java.sql.SQLException if the columnLabel is not valid; if a database access error occurs; the result set * concurrency is CONCUR_READ_ONLY or this method is called on a closed * result set * @throws java.sql.SQLFeatureNotSupportedException * if the JDBC driver does not support this method * @since 1.2 */ public void updateFloat(final String columnLabel, final float x) throws SQLException { throw SQLExceptionMapper.getFeatureNotSupportedException("Updates are not supported"); } /** * Updates the designated column with a double value. The updater methods are used to update column * values in the current row or the insert row. The updater methods do not update the underlying database; instead * the updateRow or insertRow methods are called to update the database. * * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not * specified, then the label is the name of the column * @param x the new column value * @throws java.sql.SQLException if the columnLabel is not valid; if a database access error occurs; the result set * concurrency is CONCUR_READ_ONLY or this method is called on a closed * result set * @throws java.sql.SQLFeatureNotSupportedException * if the JDBC driver does not support this method * @since 1.2 */ public void updateDouble(final String columnLabel, final double x) throws SQLException { throw SQLExceptionMapper.getFeatureNotSupportedException("Updates are not supported"); } /** * Updates the designated column with a java.sql.BigDecimal value. The updater methods are used to * update column values in the current row or the insert row. The updater methods do not update the underlying * database; instead the updateRow or insertRow methods are called to update the * database. * * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not * specified, then the label is the name of the column * @param x the new column value * @throws java.sql.SQLException if the columnLabel is not valid; if a database access error occurs; the result set * concurrency is CONCUR_READ_ONLY or this method is called on a closed * result set * @throws java.sql.SQLFeatureNotSupportedException * if the JDBC driver does not support this method * @since 1.2 */ public void updateBigDecimal(final String columnLabel, final BigDecimal x) throws SQLException { throw SQLExceptionMapper.getFeatureNotSupportedException("Updates are not supported"); } /** * Updates the designated column with a String value. The updater methods are used to update column * values in the current row or the insert row. The updater methods do not update the underlying database; instead * the updateRow or insertRow methods are called to update the database. * * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not * specified, then the label is the name of the column * @param x the new column value * @throws java.sql.SQLException if the columnLabel is not valid; if a database access error occurs; the result set * concurrency is CONCUR_READ_ONLY or this method is called on a closed * result set * @throws java.sql.SQLFeatureNotSupportedException * if the JDBC driver does not support this method * @since 1.2 */ public void updateString(final String columnLabel, final String x) throws SQLException { throw SQLExceptionMapper.getFeatureNotSupportedException("Updates are not supported"); } /** * Updates the designated column with a byte array value. *

* The updater methods are used to update column values in the current row or the insert row. The updater methods * do not update the underlying database; instead the updateRow or insertRow methods are * called to update the database. * * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not * specified, then the label is the name of the column * @param x the new column value * @throws java.sql.SQLException if the columnLabel is not valid; if a database access error occurs; the result set * concurrency is CONCUR_READ_ONLY or this method is called on a closed * result set * @throws java.sql.SQLFeatureNotSupportedException * if the JDBC driver does not support this method * @since 1.2 */ public void updateBytes(final String columnLabel, final byte[] x) throws SQLException { throw SQLExceptionMapper.getFeatureNotSupportedException("Updates are not supported"); } /** * Updates the designated column with a java.sql.Date value. The updater methods are used to update * column values in the current row or the insert row. The updater methods do not update the underlying database; * instead the updateRow or insertRow methods are called to update the database. * * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not * specified, then the label is the name of the column * @param x the new column value * @throws java.sql.SQLException if the columnLabel is not valid; if a database access error occurs; the result set * concurrency is CONCUR_READ_ONLY or this method is called on a closed * result set * @throws java.sql.SQLFeatureNotSupportedException * if the JDBC driver does not support this method * @since 1.2 */ public void updateDate(final String columnLabel, final Date x) throws SQLException { throw SQLExceptionMapper.getFeatureNotSupportedException("Updates are not supported"); } /** * Updates the designated column with a java.sql.Time value. The updater methods are used to update * column values in the current row or the insert row. The updater methods do not update the underlying database; * instead the updateRow or insertRow methods are called to update the database. * * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not * specified, then the label is the name of the column * @param x the new column value * @throws java.sql.SQLException if the columnLabel is not valid; if a database access error occurs; the result set * concurrency is CONCUR_READ_ONLY or this method is called on a closed * result set * @throws java.sql.SQLFeatureNotSupportedException * if the JDBC driver does not support this method * @since 1.2 */ public void updateTime(final String columnLabel, final Time x) throws SQLException { throw SQLExceptionMapper.getFeatureNotSupportedException("Updates are not supported"); } /** * Updates the designated column with a java.sql.Timestamp value. The updater methods are used to * update column values in the current row or the insert row. The updater methods do not update the underlying * database; instead the updateRow or insertRow methods are called to update the * database. * * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not * specified, then the label is the name of the column * @param x the new column value * @throws java.sql.SQLException if the columnLabel is not valid; if a database access error occurs; the result set * concurrency is CONCUR_READ_ONLY or this method is called on a closed * result set * @throws java.sql.SQLFeatureNotSupportedException * if the JDBC driver does not support this method * @since 1.2 */ public void updateTimestamp(final String columnLabel, final Timestamp x) throws SQLException { throw SQLExceptionMapper.getFeatureNotSupportedException("Updates are not supported"); } /** * Updates the designated column with an ascii stream value, which will have the specified number of bytes. The * updater methods are used to update column values in the current row or the insert row. The updater methods do * not update the underlying database; instead the updateRow or insertRow methods are * called to update the database. * * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not * specified, then the label is the name of the column * @param x the new column value * @param length the length of the stream * @throws java.sql.SQLException if the columnLabel is not valid; if a database access error occurs; the result set * concurrency is CONCUR_READ_ONLY or this method is called on a closed * result set * @throws java.sql.SQLFeatureNotSupportedException * if the JDBC driver does not support this method * @since 1.2 */ public void updateAsciiStream(final String columnLabel, final InputStream x, final int length) throws SQLException { throw SQLExceptionMapper.getFeatureNotSupportedException("Updates are not supported"); } /** * Updates the designated column with a binary stream value, which will have the specified number of bytes. The * updater methods are used to update column values in the current row or the insert row. The updater methods do * not update the underlying database; instead the updateRow or insertRow methods are * called to update the database. * * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not * specified, then the label is the name of the column * @param x the new column value * @param length the length of the stream * @throws java.sql.SQLException if the columnLabel is not valid; if a database access error occurs; the result set * concurrency is CONCUR_READ_ONLY or this method is called on a closed * result set * @throws java.sql.SQLFeatureNotSupportedException * if the JDBC driver does not support this method * @since 1.2 */ public void updateBinaryStream(final String columnLabel, final InputStream x, final int length) throws SQLException { throw SQLExceptionMapper.getFeatureNotSupportedException("Updates are not supported"); } /** * Updates the designated column with a character stream value, which will have the specified number of bytes. The * updater methods are used to update column values in the current row or the insert row. The updater methods do * not update the underlying database; instead the updateRow or insertRow methods are * called to update the database. * * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not * specified, then the label is the name of the column * @param reader the java.io.Reader object containing the new column value * @param length the length of the stream * @throws java.sql.SQLException if the columnLabel is not valid; if a database access error occurs; the result set * concurrency is CONCUR_READ_ONLY or this method is called on a closed * result set * @throws java.sql.SQLFeatureNotSupportedException * if the JDBC driver does not support this method * @since 1.2 */ public void updateCharacterStream(final String columnLabel, final Reader reader, final int length) throws SQLException { throw SQLExceptionMapper.getFeatureNotSupportedException("Updates are not supported"); } /** * Updates the designated column with an Object value. The updater methods are used to update column * values in the current row or the insert row. The updater methods do not update the underlying database; instead * the updateRow or insertRow methods are called to update the database. *

* If the second argument is an InputStream then the stream must contain the number of bytes specified * by scaleOrLength. If the second argument is a Reader then the reader must contain the number of * characters specified by scaleOrLength. If these conditions are not true the driver will generate a * SQLException when the statement is executed. * * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not * specified, then the label is the name of the column * @param x the new column value * @param scaleOrLength for an object of java.math.BigDecimal , this is the number of digits after the * decimal point. For Java Object types InputStream and Reader, this * is the length of the data in the stream or reader. For all other types, this value will be * ignored. * @throws java.sql.SQLException if the columnLabel is not valid; if a database access error occurs; the result set * concurrency is CONCUR_READ_ONLY or this method is called on a closed * result set * @throws java.sql.SQLFeatureNotSupportedException * if the JDBC driver does not support this method * @since 1.2 */ public void updateObject(final String columnLabel, final Object x, final int scaleOrLength) throws SQLException { throw SQLExceptionMapper.getFeatureNotSupportedException("Updates are not supported"); } /** * Updates the designated column with an Object value. The updater methods are used to update column * values in the current row or the insert row. The updater methods do not update the underlying database; instead * the updateRow or insertRow methods are called to update the database. * * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not * specified, then the label is the name of the column * @param x the new column value * @throws java.sql.SQLException if the columnLabel is not valid; if a database access error occurs; the result set * concurrency is CONCUR_READ_ONLY or this method is called on a closed * result set * @throws java.sql.SQLFeatureNotSupportedException * if the JDBC driver does not support this method * @since 1.2 */ public void updateObject(final String columnLabel, final Object x) throws SQLException { throw SQLExceptionMapper.getFeatureNotSupportedException("Updates are not supported"); } /** * Inserts the contents of the insert row into this ResultSet object and into the database. The cursor * must be on the insert row when this method is called. * * @throws java.sql.SQLException if a database access error occurs; the result set concurrency is * CONCUR_READ_ONLY, this method is called on a closed result set, if * this method is called when the cursor is not on the insert row, or if not all of * non-nullable columns in the insert row have been given a non-null value * @throws java.sql.SQLFeatureNotSupportedException * if the JDBC driver does not support this method * @since 1.2 */ public void insertRow() throws SQLException { throw SQLExceptionMapper.getFeatureNotSupportedException("Updates are not supported"); } /** * Updates the underlying database with the new contents of the current row of this ResultSet object. * This method cannot be called when the cursor is on the insert row. * * @throws java.sql.SQLException if a database access error occurs; the result set concurrency is * CONCUR_READ_ONLY; this method is called on a closed result set or if * this method is called when the cursor is on the insert row * @throws java.sql.SQLFeatureNotSupportedException * if the JDBC driver does not support this method * @since 1.2 */ public void updateRow() throws SQLException { throw SQLExceptionMapper.getFeatureNotSupportedException("Updates are not supported"); } /** * Deletes the current row from this ResultSet object and from the underlying database. This method * cannot be called when the cursor is on the insert row. * * @throws java.sql.SQLException if a database access error occurs; the result set concurrency is * CONCUR_READ_ONLY; this method is called on a closed result set or if * this method is called when the cursor is on the insert row * @throws java.sql.SQLFeatureNotSupportedException * if the JDBC driver does not support this method * @since 1.2 */ public void deleteRow() throws SQLException { throw SQLExceptionMapper.getFeatureNotSupportedException("Updates are not supported"); } /** * Refreshes the current row with its most recent value in the database. This method cannot be called when the * cursor is on the insert row. *

*

The refreshRow method provides a way for an application to explicitly tell the JDBC driver to * refetch a row(s) from the database. An application may want to call refreshRow when caching or * prefetching is being done by the JDBC driver to fetch the latest value of a row from the database. The JDBC * driver may actually refresh multiple rows at once if the fetch size is greater than one. *

*

All values are refetched subject to the transaction isolation level and cursor sensitivity. If * refreshRow is called after calling an updater method, but before calling the method * updateRow, then the updates made to the row are lost. Calling the method refreshRow * frequently will likely slow performance. * * @throws java.sql.SQLException if a database access error occurs; this method is called on a closed result set; * the result set type is TYPE_FORWARD_ONLY or if this method is called * when the cursor is on the insert row * @throws java.sql.SQLFeatureNotSupportedException * if the JDBC driver does not support this method or this method is not supported for * the specified result set type and result set concurrency. * @since 1.2 */ public void refreshRow() throws SQLException { throw SQLExceptionMapper.getFeatureNotSupportedException("Row refresh is not supported"); } /** * Cancels the updates made to the current row in this ResultSet object. This method may be called * after calling an updater method(s) and before calling the method updateRow to roll back the updates * made to a row. If no updates have been made or updateRow has already been called, this method has * no effect. * * @throws java.sql.SQLException if a database access error occurs; this method is called on a closed result set; * the result set concurrency is CONCUR_READ_ONLY or if this method is * called when the cursor is on the insert row * @throws java.sql.SQLFeatureNotSupportedException * if the JDBC driver does not support this method * @since 1.2 */ public void cancelRowUpdates() throws SQLException { throw SQLExceptionMapper.getFeatureNotSupportedException("Updates are not supported"); } /** * Moves the cursor to the insert row. The current cursor position is remembered while the cursor is positioned on * the insert row. *

* The insert row is a special row associated with an updatable result set. It is essentially a buffer where a new * row may be constructed by calling the updater methods prior to inserting the row into the result set. *

* Only the updater, getter, and insertRow methods may be called when the cursor is on the insert row. * All of the columns in a result set must be given a value each time this method is called before calling * insertRow. An updater method must be called before a getter method can be called on a column value. * * @throws java.sql.SQLException if a database access error occurs; this method is called on a closed result set or * the result set concurrency is CONCUR_READ_ONLY * @throws java.sql.SQLFeatureNotSupportedException * if the JDBC driver does not support this method * @since 1.2 */ public void moveToInsertRow() throws SQLException { throw SQLExceptionMapper.getFeatureNotSupportedException("Updates are not supported"); } /** * Moves the cursor to the remembered cursor position, usually the current row. This method has no effect if the * cursor is not on the insert row. * * @throws java.sql.SQLException if a database access error occurs; this method is called on a closed result set or * the result set concurrency is CONCUR_READ_ONLY * @throws java.sql.SQLFeatureNotSupportedException * if the JDBC driver does not support this method * @since 1.2 */ public void moveToCurrentRow() throws SQLException { throw SQLExceptionMapper.getFeatureNotSupportedException("Updates are not supported"); } /** * Retrieves the Statement object that produced this ResultSet object. If the result set * was generated some other way, such as by a DatabaseMetaData method, this method may return * null. * * @return the Statment object that produced this ResultSet object or null if * the result set was produced some other way * @throws java.sql.SQLException if a database access error occurs or this method is called on a closed result set * @since 1.2 */ public Statement getStatement() throws SQLException { return this.statement; } /** * According to the JDBC4 spec, this is only required for UDT's, and since drizzle does not support UDTs, this * method ignores the map parameter *

* Retrieves the value of the designated column in the current row of this ResultSet object as an * Object in the Java programming language. If the value is an SQL NULL, the driver * returns a Java null. This method uses the given Map object for the custom mapping of * the SQL structured or distinct type that is being retrieved. * * @param columnIndex the first column is 1, the second is 2, ... * @param map a java.util.Map object that contains the mapping from SQL type names to classes * in the Java programming language * @return an Object in the Java programming language representing the SQL value * @throws java.sql.SQLException if the columnIndex is not valid; if a database access error occurs or this method * is called on a closed result set * @throws java.sql.SQLFeatureNotSupportedException * if the JDBC driver does not support this method * @since 1.2 */ public Object getObject(final int columnIndex, final Map> map) throws SQLException { return getObject(columnIndex); } /** * Retrieves the value of the designated column in the current row of this ResultSet object as a * Ref object in the Java programming language. * * @param columnIndex the first column is 1, the second is 2, ... * @return a Ref object representing an SQL REF value * @throws java.sql.SQLException if the columnIndex is not valid; if a database access error occurs or this method * is called on a closed result set * @throws java.sql.SQLFeatureNotSupportedException * if the JDBC driver does not support this method * @since 1.2 */ public Ref getRef(final int columnIndex) throws SQLException { // TODO: figure out what REF's are and implement this method throw SQLExceptionMapper.getFeatureNotSupportedException("Updates are not supported"); } /** * Retrieves the value of the designated column in the current row of this ResultSet object as a * Blob object in the Java programming language. * * @param columnIndex the first column is 1, the second is 2, ... * @return a Blob object representing the SQL BLOB value in the specified column * @throws java.sql.SQLException if the columnIndex is not valid; if a database access error occurs or this method * is called on a closed result set * @throws java.sql.SQLFeatureNotSupportedException * if the JDBC driver does not support this method * @since 1.2 */ public Blob getBlob(final int columnIndex) throws SQLException { return new DrizzleBlob(getValueObject(columnIndex).getBytes()); } /** * Retrieves the value of the designated column in the current row of this ResultSet object as a * Clob object in the Java programming language. * * @param columnIndex the first column is 1, the second is 2, ... * @return a Clob object representing the SQL CLOB value in the specified column * @throws java.sql.SQLException if the columnIndex is not valid; if a database access error occurs or this method * is called on a closed result set * @throws java.sql.SQLFeatureNotSupportedException * if the JDBC driver does not support this method * @since 1.2 */ public Clob getClob(final int columnIndex) throws SQLException { throw SQLExceptionMapper.getFeatureNotSupportedException("CLOBs are not supported"); } /** * Retrieves the value of the designated column in the current row of this ResultSet object as an * Array object in the Java programming language. * * @param columnIndex the first column is 1, the second is 2, ... * @return an Array object representing the SQL ARRAY value in the specified column * @throws java.sql.SQLException if the columnIndex is not valid; if a database access error occurs or this method * is called on a closed result set * @throws java.sql.SQLFeatureNotSupportedException * if the JDBC driver does not support this method * @since 1.2 */ public Array getArray(final int columnIndex) throws SQLException { throw SQLExceptionMapper.getFeatureNotSupportedException("Arrays are not supported"); } /** * According to the JDBC4 spec, this is only required for UDT's, and since drizzle does not support UDTs, this * method ignores the map parameter *

* Retrieves the value of the designated column in the current row of this ResultSet object as an * Object in the Java programming language. If the value is an SQL NULL, the driver * returns a Java null. This method uses the specified Map object for custom mapping if * appropriate. * * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not * specified, then the label is the name of the column * @param map a java.util.Map object that contains the mapping from SQL type names to classes * in the Java programming language * @return an Object representing the SQL value in the specified column * @throws java.sql.SQLException if the columnLabel is not valid; if a database access error occurs or this method * is called on a closed result set * @throws java.sql.SQLFeatureNotSupportedException * if the JDBC driver does not support this method * @since 1.2 */ public Object getObject(final String columnLabel, final Map> map) throws SQLException { //TODO: implement this throw SQLExceptionMapper.getFeatureNotSupportedException("Type map getting is not supported"); } /** * Retrieves the value of the designated column in the current row of this ResultSet object as a * Ref object in the Java programming language. * * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not * specified, then the label is the name of the column * @return a Ref object representing the SQL REF value in the specified column * @throws java.sql.SQLException if the columnLabel is not valid; if a database access error occurs or this method * is called on a closed result set * @throws java.sql.SQLFeatureNotSupportedException * if the JDBC driver does not support this method * @since 1.2 */ public Ref getRef(final String columnLabel) throws SQLException { // TODO see getRef(int) throw SQLExceptionMapper.getFeatureNotSupportedException("Getting REFs not supported"); } /** * Retrieves the value of the designated column in the current row of this ResultSet object as a * Blob object in the Java programming language. * * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not * specified, then the label is the name of the column * @return a Blob object representing the SQL BLOB value in the specified column * @throws java.sql.SQLException if the columnLabel is not valid; if a database access error occurs or this method * is called on a closed result set * @throws java.sql.SQLFeatureNotSupportedException * if the JDBC driver does not support this method * @since 1.2 */ public Blob getBlob(final String columnLabel) throws SQLException { return new DrizzleBlob(getValueObject(columnLabel).getBytes()); } /** * Retrieves the value of the designated column in the current row of this ResultSet object as a * Clob object in the Java programming language. * * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not * specified, then the label is the name of the column * @return a Clob object representing the SQL CLOB value in the specified column * @throws java.sql.SQLException if the columnLabel is not valid; if a database access error occurs or this method * is called on a closed result set * @throws java.sql.SQLFeatureNotSupportedException * if the JDBC driver does not support this method * @since 1.2 */ public Clob getClob(final String columnLabel) throws SQLException { throw SQLExceptionMapper.getFeatureNotSupportedException("CLOBs not supported"); } /** * Retrieves the value of the designated column in the current row of this ResultSet object as an * Array object in the Java programming language. * * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not * specified, then the label is the name of the column * @return an Array object representing the SQL ARRAY value in the specified column * @throws java.sql.SQLException if the columnLabel is not valid; if a database access error occurs or this method * is called on a closed result set * @throws java.sql.SQLFeatureNotSupportedException * if the JDBC driver does not support this method * @since 1.2 */ public Array getArray(final String columnLabel) throws SQLException { throw SQLExceptionMapper.getFeatureNotSupportedException("Arrays are not supported"); } /** * Retrieves the value of the designated column in the current row of this ResultSet object as a * java.sql.Date object in the Java programming language. This method uses the given calendar to * construct an appropriate millisecond value for the date if the underlying database does not store timezone * information. * * @param columnIndex the first column is 1, the second is 2, ... * @param cal the java.util.Calendar object to use in constructing the date * @return the column value as a java.sql.Date object; if the value is SQL NULL, the value * returned is null in the Java programming language * @throws java.sql.SQLException if the columnIndex is not valid; if a database access error occurs or this method * is called on a closed result set * @since 1.2 */ public Date getDate(final int columnIndex, final Calendar cal) throws SQLException { try { return getValueObject(columnIndex).getDate(cal); } catch (ParseException e) { throw SQLExceptionMapper.getSQLException("Could not parse as date"); } } /** * Retrieves the value of the designated column in the current row of this ResultSet object as a * java.sql.Date object in the Java programming language. This method uses the given calendar to * construct an appropriate millisecond value for the date if the underlying database does not store timezone * information. * * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not * specified, then the label is the name of the column * @param cal the java.util.Calendar object to use in constructing the date * @return the column value as a java.sql.Date object; if the value is SQL NULL, the value * returned is null in the Java programming language * @throws java.sql.SQLException if the columnLabel is not valid; if a database access error occurs or this method * is called on a closed result set * @since 1.2 */ public Date getDate(final String columnLabel, final Calendar cal) throws SQLException { try { return getValueObject(columnLabel).getDate(cal); } catch (ParseException e) { throw SQLExceptionMapper.getSQLException("Could not parse as date"); } } /** * Retrieves the value of the designated column in the current row of this ResultSet object as a * java.sql.Time object in the Java programming language. This method uses the given calendar to * construct an appropriate millisecond value for the time if the underlying database does not store timezone * information. * * @param columnIndex the first column is 1, the second is 2, ... * @param cal the java.util.Calendar object to use in constructing the time * @return the column value as a java.sql.Time object; if the value is SQL NULL, the value * returned is null in the Java programming language * @throws java.sql.SQLException if the columnIndex is not valid; if a database access error occurs or this method * is called on a closed result set * @since 1.2 */ public Time getTime(final int columnIndex, final Calendar cal) throws SQLException { return getValueObject(columnIndex).getTime(cal); } /** * Retrieves the value of the designated column in the current row of this ResultSet object as a * java.sql.Time object in the Java programming language. This method uses the given calendar to * construct an appropriate millisecond value for the time if the underlying database does not store timezone * information. * * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not * specified, then the label is the name of the column * @param cal the java.util.Calendar object to use in constructing the time * @return the column value as a java.sql.Time object; if the value is SQL NULL, the value * returned is null in the Java programming language * @throws java.sql.SQLException if the columnLabel is not valid; if a database access error occurs or this method * is called on a closed result set * @since 1.2 */ public Time getTime(final String columnLabel, final Calendar cal) throws SQLException { return getValueObject(columnLabel).getTime(cal); } /** * Retrieves the value of the designated column in the current row of this ResultSet object as a * java.sql.Timestamp object in the Java programming language. This method uses the given calendar to * construct an appropriate millisecond value for the timestamp if the underlying database does not store timezone * information. * * @param columnIndex the first column is 1, the second is 2, ... * @param cal the java.util.Calendar object to use in constructing the timestamp * @return the column value as a java.sql.Timestamp object; if the value is SQL NULL, the * value returned is null in the Java programming language * @throws java.sql.SQLException if the columnIndex is not valid; if a database access error occurs or this method * is called on a closed result set * @since 1.2 */ public Timestamp getTimestamp(final int columnIndex, final Calendar cal) throws SQLException { try { final Timestamp result = getValueObject(columnIndex).getTimestamp(cal); if (result == null) { return null; } return new Timestamp(result.getTime()); } catch (ParseException e) { throw SQLExceptionMapper.getSQLException("Could not parse as time"); } } /** * Retrieves the value of the designated column in the current row of this ResultSet object as a * java.sql.Timestamp object in the Java programming language. This method uses the given calendar to * construct an appropriate millisecond value for the timestamp if the underlying database does not store timezone * information. * * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not * specified, then the label is the name of the column * @param cal the java.util.Calendar object to use in constructing the date * @return the column value as a java.sql.Timestamp object; if the value is SQL NULL, the * value returned is null in the Java programming language * @throws java.sql.SQLException if the columnLabel is not valid or if a database access error occurs or this method * is called on a closed result set * @since 1.2 */ public Timestamp getTimestamp(final String columnLabel, final Calendar cal) throws SQLException { try { final Timestamp result = getValueObject(columnLabel).getTimestamp(cal); if (result == null) { return null; } return new Timestamp(result.getTime()); } catch (ParseException e) { throw SQLExceptionMapper.getSQLException("Could not parse as time"); } } /** * Retrieves the value of the designated column in the current row of this ResultSet object as a * java.net.URL object in the Java programming language. * * @param columnIndex the index of the column 1 is the first, 2 is the second,... * @return the column value as a java.net.URL object; if the value is SQL NULL, the value * returned is null in the Java programming language * @throws java.sql.SQLException if the columnIndex is not valid; if a database access error occurs; this method is * called on a closed result set or if a URL is malformed * @throws java.sql.SQLFeatureNotSupportedException * if the JDBC driver does not support this method * @since 1.4 */ public URL getURL(final int columnIndex) throws SQLException { try { return new URL(getValueObject(columnIndex).getString()); } catch (MalformedURLException e) { throw SQLExceptionMapper.getSQLException("Could not parse as URL"); } } /** * Retrieves the value of the designated column in the current row of this ResultSet object as a * java.net.URL object in the Java programming language. * * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not * specified, then the label is the name of the column * @return the column value as a java.net.URL object; if the value is SQL NULL, the value * returned is null in the Java programming language * @throws java.sql.SQLException if the columnLabel is not valid; if a database access error occurs; this method is * called on a closed result set or if a URL is malformed * @throws java.sql.SQLFeatureNotSupportedException * if the JDBC driver does not support this method * @since 1.4 */ public URL getURL(final String columnLabel) throws SQLException { try { return new URL(getValueObject(columnLabel).getString()); } catch (MalformedURLException e) { throw SQLExceptionMapper.getSQLException("Could not parse as URL"); } } /** * Updates the designated column with a java.sql.Ref value. The updater methods are used to update * column values in the current row or the insert row. The updater methods do not update the underlying database; * instead the updateRow or insertRow methods are called to update the database. * * @param columnIndex the first column is 1, the second is 2, ... * @param x the new column value * @throws java.sql.SQLException if the columnIndex is not valid; if a database access error occurs; the result set * concurrency is CONCUR_READ_ONLY or this method is called on a closed * result set * @throws java.sql.SQLFeatureNotSupportedException * if the JDBC driver does not support this method * @since 1.4 */ public void updateRef(final int columnIndex, final Ref x) throws SQLException { throw SQLExceptionMapper.getFeatureNotSupportedException("Updates are not supported"); } /** * Updates the designated column with a java.sql.Ref value. The updater methods are used to update * column values in the current row or the insert row. The updater methods do not update the underlying database; * instead the updateRow or insertRow methods are called to update the database. * * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not * specified, then the label is the name of the column * @param x the new column value * @throws java.sql.SQLException if the columnLabel is not valid; if a database access error occurs; the result set * concurrency is CONCUR_READ_ONLY or this method is called on a closed * result set * @throws java.sql.SQLFeatureNotSupportedException * if the JDBC driver does not support this method * @since 1.4 */ public void updateRef(final String columnLabel, final Ref x) throws SQLException { throw SQLExceptionMapper.getFeatureNotSupportedException("Updates are not supported"); } /** * Updates the designated column with a java.sql.Blob value. The updater methods are used to update * column values in the current row or the insert row. The updater methods do not update the underlying database; * instead the updateRow or insertRow methods are called to update the database. * * @param columnIndex the first column is 1, the second is 2, ... * @param x the new column value * @throws java.sql.SQLException if the columnIndex is not valid; if a database access error occurs; the result set * concurrency is CONCUR_READ_ONLY or this method is called on a closed * result set * @throws java.sql.SQLFeatureNotSupportedException * if the JDBC driver does not support this method * @since 1.4 */ public void updateBlob(final int columnIndex, final Blob x) throws SQLException { throw SQLExceptionMapper.getFeatureNotSupportedException("Updates are not supported"); } /** * Updates the designated column with a java.sql.Blob value. The updater methods are used to update * column values in the current row or the insert row. The updater methods do not update the underlying database; * instead the updateRow or insertRow methods are called to update the database. * * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not * specified, then the label is the name of the column * @param x the new column value * @throws java.sql.SQLException if the columnLabel is not valid; if a database access error occurs; the result set * concurrency is CONCUR_READ_ONLY or this method is called on a closed * result set * @throws java.sql.SQLFeatureNotSupportedException * if the JDBC driver does not support this method * @since 1.4 */ public void updateBlob(final String columnLabel, final Blob x) throws SQLException { throw SQLExceptionMapper.getFeatureNotSupportedException("Updates are not supported"); } /** * Updates the designated column with a java.sql.Clob value. The updater methods are used to update * column values in the current row or the insert row. The updater methods do not update the underlying database; * instead the updateRow or insertRow methods are called to update the database. * * @param columnIndex the first column is 1, the second is 2, ... * @param x the new column value * @throws java.sql.SQLException if the columnIndex is not valid; if a database access error occurs; the result set * concurrency is CONCUR_READ_ONLY or this method is called on a closed * result set * @throws java.sql.SQLFeatureNotSupportedException * if the JDBC driver does not support this method * @since 1.4 */ public void updateClob(final int columnIndex, final Clob x) throws SQLException { throw SQLExceptionMapper.getFeatureNotSupportedException("Updates are not supported"); } /** * Updates the designated column with a java.sql.Clob value. The updater methods are used to update * column values in the current row or the insert row. The updater methods do not update the underlying database; * instead the updateRow or insertRow methods are called to update the database. * * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not * specified, then the label is the name of the column * @param x the new column value * @throws java.sql.SQLException if the columnLabel is not valid; if a database access error occurs; the result set * concurrency is CONCUR_READ_ONLY or this method is called on a closed * result set * @throws java.sql.SQLFeatureNotSupportedException * if the JDBC driver does not support this method * @since 1.4 */ public void updateClob(final String columnLabel, final Clob x) throws SQLException { throw SQLExceptionMapper.getFeatureNotSupportedException("Updates are not supported"); } /** * Updates the designated column with a java.sql.Array value. The updater methods are used to update * column values in the current row or the insert row. The updater methods do not update the underlying database; * instead the updateRow or insertRow methods are called to update the database. * * @param columnIndex the first column is 1, the second is 2, ... * @param x the new column value * @throws java.sql.SQLException if the columnIndex is not valid; if a database access error occurs; the result set * concurrency is CONCUR_READ_ONLY or this method is called on a closed * result set * @throws java.sql.SQLFeatureNotSupportedException * if the JDBC driver does not support this method * @since 1.4 */ public void updateArray(final int columnIndex, final Array x) throws SQLException { throw SQLExceptionMapper.getFeatureNotSupportedException("Updates are not supported"); } /** * Updates the designated column with a java.sql.Array value. The updater methods are used to update * column values in the current row or the insert row. The updater methods do not update the underlying database; * instead the updateRow or insertRow methods are called to update the database. * * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not * specified, then the label is the name of the column * @param x the new column value * @throws java.sql.SQLException if the columnLabel is not valid; if a database access error occurs; the result set * concurrency is CONCUR_READ_ONLY or this method is called on a closed * result set * @throws java.sql.SQLFeatureNotSupportedException * if the JDBC driver does not support this method * @since 1.4 */ public void updateArray(final String columnLabel, final Array x) throws SQLException { throw SQLExceptionMapper.getFeatureNotSupportedException("Updates are not supported"); } /** * Retrieves the value of the designated column in the current row of this ResultSet object as a * java.sql.RowId object in the Java programming language. * * @param columnIndex the first column is 1, the second 2, ... * @return the column value; if the value is a SQL NULL the value returned is null * @throws java.sql.SQLException if the columnIndex is not valid; if a database access error occurs or this method * is called on a closed result set * @throws java.sql.SQLFeatureNotSupportedException * if the JDBC driver does not support this method * @since 1.6 */ public java.sql.RowId getRowId(final int columnIndex) throws SQLException { throw SQLExceptionMapper.getFeatureNotSupportedException("RowIDs not supported"); } /** * Retrieves the value of the designated column in the current row of this ResultSet object as a * java.sql.RowId object in the Java programming language. * * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not * specified, then the label is the name of the column * @return the column value ; if the value is a SQL NULL the value returned is null * @throws java.sql.SQLException if the columnLabel is not valid; if a database access error occurs or this method * is called on a closed result set * @throws java.sql.SQLFeatureNotSupportedException * if the JDBC driver does not support this method * @since 1.6 */ public java.sql.RowId getRowId(final String columnLabel) throws SQLException { throw SQLExceptionMapper.getFeatureNotSupportedException("RowIDs not supported"); } /** * Updates the designated column with a RowId value. The updater methods are used to update column * values in the current row or the insert row. The updater methods do not update the underlying database; instead * the updateRow or insertRow methods are called to update the database. * * @param columnIndex the first column is 1, the second 2, ... * @param x the column value * @throws java.sql.SQLException if the columnIndex is not valid; if a database access error occurs; the result set * concurrency is CONCUR_READ_ONLY or this method is called on a closed * result set * @throws java.sql.SQLFeatureNotSupportedException * if the JDBC driver does not support this method * @since 1.6 */ public void updateRowId(final int columnIndex, final java.sql.RowId x) throws SQLException { throw SQLExceptionMapper.getFeatureNotSupportedException("Updates are not supported"); } /** * Updates the designated column with a RowId value. The updater methods are used to update column * values in the current row or the insert row. The updater methods do not update the underlying database; instead * the updateRow or insertRow methods are called to update the database. * * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not * specified, then the label is the name of the column * @param x the column value * @throws java.sql.SQLException if the columnLabel is not valid; if a database access error occurs; the result set * concurrency is CONCUR_READ_ONLY or this method is called on a closed * result set * @throws java.sql.SQLFeatureNotSupportedException * if the JDBC driver does not support this method * @since 1.6 */ public void updateRowId(final String columnLabel, final java.sql.RowId x) throws SQLException { throw SQLExceptionMapper.getFeatureNotSupportedException("Updates are not supported"); } /** * Retrieves the holdability of this ResultSet object * * @return either ResultSet.HOLD_CURSORS_OVER_COMMIT or ResultSet.CLOSE_CURSORS_AT_COMMIT * @throws java.sql.SQLException if a database access error occurs or this method is called on a closed result set * @since 1.6 */ public int getHoldability() throws SQLException { return ResultSet.HOLD_CURSORS_OVER_COMMIT; } /** * Retrieves whether this ResultSet object has been closed. A ResultSet is closed if the * method close has been called on it, or if it is automatically closed. * * @return true if this ResultSet object is closed; false if it is still open * @throws java.sql.SQLException if a database access error occurs * @since 1.6 */ public boolean isClosed() throws SQLException { return isClosed; } /** * Updates the designated column with a String value. It is intended for use when updating * NCHAR,NVARCHAR and LONGNVARCHAR columns. The updater methods are used to * update column values in the current row or the insert row. The updater methods do not update the underlying * database; instead the updateRow or insertRow methods are called to update the * database. * * @param columnIndex the first column is 1, the second 2, ... * @param nString the value for the column to be updated * @throws java.sql.SQLException if the columnIndex is not valid; if the driver does not support national character * sets; if the driver can detect that a data conversion error could occur; this * method is called on a closed result set; the result set concurrency is * CONCUR_READ_ONLY or if a database access error occurs * @throws java.sql.SQLFeatureNotSupportedException * if the JDBC driver does not support this method * @since 1.6 */ public void updateNString(final int columnIndex, final String nString) throws SQLException { throw SQLExceptionMapper.getFeatureNotSupportedException("Updates are not supported"); } /** * Updates the designated column with a String value. It is intended for use when updating * NCHAR,NVARCHAR and LONGNVARCHAR columns. The updater methods are used to * update column values in the current row or the insert row. The updater methods do not update the underlying * database; instead the updateRow or insertRow methods are called to update the * database. * * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not * specified, then the label is the name of the column * @param nString the value for the column to be updated * @throws java.sql.SQLException if the columnLabel is not valid; if the driver does not support national character * sets; if the driver can detect that a data conversion error could occur; this * method is called on a closed result set; the result set concurrency is * CONCUR_READ_ONLY or if a database access error occurs * @throws java.sql.SQLFeatureNotSupportedException * if the JDBC driver does not support this method * @since 1.6 */ public void updateNString(final String columnLabel, final String nString) throws SQLException { throw SQLExceptionMapper.getFeatureNotSupportedException("Updates are not supported"); } /** * Updates the designated column with a java.sql.NClob value. The updater methods are used to update * column values in the current row or the insert row. The updater methods do not update the underlying database; * instead the updateRow or insertRow methods are called to update the database. * * @param columnIndex the first column is 1, the second 2, ... * @param nClob the value for the column to be updated * @throws java.sql.SQLException if the columnIndex is not valid; if the driver does not support national character * sets; if the driver can detect that a data conversion error could occur; this * method is called on a closed result set; if a database access error occurs or the * result set concurrency is CONCUR_READ_ONLY * @throws java.sql.SQLFeatureNotSupportedException * if the JDBC driver does not support this method * @since 1.6 */ public void updateNClob(final int columnIndex, final java.sql.NClob nClob) throws SQLException { throw SQLExceptionMapper.getFeatureNotSupportedException("Updates are not supported"); } /** * Updates the designated column with a java.sql.NClob value. The updater methods are used to update * column values in the current row or the insert row. The updater methods do not update the underlying database; * instead the updateRow or insertRow methods are called to update the database. * * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not * specified, then the label is the name of the column * @param nClob the value for the column to be updated * @throws java.sql.SQLException if the columnLabel is not valid; if the driver does not support national character * sets; if the driver can detect that a data conversion error could occur; this * method is called on a closed result set; if a database access error occurs or the * result set concurrency is CONCUR_READ_ONLY * @throws java.sql.SQLFeatureNotSupportedException * if the JDBC driver does not support this method * @since 1.6 */ public void updateNClob(final String columnLabel, final java.sql.NClob nClob) throws SQLException { throw SQLExceptionMapper.getFeatureNotSupportedException("Updates are not supported"); } /** * Retrieves the value of the designated column in the current row of this ResultSet object as a * NClob object in the Java programming language. * * @param columnIndex the first column is 1, the second is 2, ... * @return a NClob object representing the SQL NCLOB value in the specified column * @throws java.sql.SQLException if the columnIndex is not valid; if the driver does not support national character * sets; if the driver can detect that a data conversion error could occur; this * method is called on a closed result set or if a database access error occurs * @throws java.sql.SQLFeatureNotSupportedException * if the JDBC driver does not support this method * @since 1.6 */ public java.sql.NClob getNClob(final int columnIndex) throws SQLException { throw SQLExceptionMapper.getFeatureNotSupportedException("NClobs are not supported"); } /** * Retrieves the value of the designated column in the current row of this ResultSet object as a * NClob object in the Java programming language. * * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not * specified, then the label is the name of the column * @return a NClob object representing the SQL NCLOB value in the specified column * @throws java.sql.SQLException if the columnLabel is not valid; if the driver does not support national character * sets; if the driver can detect that a data conversion error could occur; this * method is called on a closed result set or if a database access error occurs * @throws java.sql.SQLFeatureNotSupportedException * if the JDBC driver does not support this method * @since 1.6 */ public java.sql.NClob getNClob(final String columnLabel) throws SQLException { throw SQLExceptionMapper.getFeatureNotSupportedException("NClobs are not supported"); } /** * Retrieves the value of the designated column in the current row of this ResultSet as a * java.sql.SQLXML object in the Java programming language. * * @param columnIndex the first column is 1, the second is 2, ... * @return a SQLXML object that maps an SQL XML value * @throws java.sql.SQLException if the columnIndex is not valid; if a database access error occurs or this method * is called on a closed result set * @throws java.sql.SQLFeatureNotSupportedException * if the JDBC driver does not support this method * @since 1.6 */ public java.sql.SQLXML getSQLXML(final int columnIndex) throws SQLException { throw SQLExceptionMapper.getFeatureNotSupportedException("SQLXML not supported"); } /** * Retrieves the value of the designated column in the current row of this ResultSet as a * java.sql.SQLXML object in the Java programming language. * * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not * specified, then the label is the name of the column * @return a SQLXML object that maps an SQL XML value * @throws java.sql.SQLException if the columnLabel is not valid; if a database access error occurs or this method * is called on a closed result set * @throws java.sql.SQLFeatureNotSupportedException * if the JDBC driver does not support this method * @since 1.6 */ public java.sql.SQLXML getSQLXML(final String columnLabel) throws SQLException { throw SQLExceptionMapper.getFeatureNotSupportedException("SQLXML not supported"); } /** * Updates the designated column with a java.sql.SQLXML value. The updater methods are used to update * column values in the current row or the insert row. The updater methods do not update the underlying database; * instead the updateRow or insertRow methods are called to update the database. *

* * @param columnIndex the first column is 1, the second 2, ... * @param xmlObject the value for the column to be updated * @throws java.sql.SQLException if the columnIndex is not valid; if a database access error occurs; this method is * called on a closed result set; the java.xml.transform.Result, * Writer or OutputStream has not been closed for the * SQLXML object; if there is an error processing the XML value or the * result set concurrency is CONCUR_READ_ONLY. The getCause * method of the exception may provide a more detailed exception, for example, if the * stream does not contain valid XML. * @throws java.sql.SQLFeatureNotSupportedException * if the JDBC driver does not support this method * @since 1.6 */ public void updateSQLXML(final int columnIndex, final java.sql.SQLXML xmlObject) throws SQLException { throw SQLExceptionMapper.getFeatureNotSupportedException("SQLXML not supported"); } /** * Updates the designated column with a java.sql.SQLXML value. The updater methods are used to update * column values in the current row or the insert row. The updater methods do not update the underlying database; * instead the updateRow or insertRow methods are called to update the database. *

* * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not * specified, then the label is the name of the column * @param xmlObject the column value * @throws java.sql.SQLException if the columnLabel is not valid; if a database access error occurs; this method is * called on a closed result set; the java.xml.transform.Result, * Writer or OutputStream has not been closed for the * SQLXML object; if there is an error processing the XML value or the * result set concurrency is CONCUR_READ_ONLY. The getCause * method of the exception may provide a more detailed exception, for example, if the * stream does not contain valid XML. * @throws java.sql.SQLFeatureNotSupportedException * if the JDBC driver does not support this method * @since 1.6 */ public void updateSQLXML(final String columnLabel, final java.sql.SQLXML xmlObject) throws SQLException { throw SQLExceptionMapper.getFeatureNotSupportedException("SQLXML not supported"); } /** * Retrieves the value of the designated column in the current row of this ResultSet object as a * String in the Java programming language. It is intended for use when accessing * NCHAR,NVARCHAR and LONGNVARCHAR columns. * * @param columnIndex the first column is 1, the second is 2, ... * @return the column value; if the value is SQL NULL, the value returned is null * @throws java.sql.SQLException if the columnIndex is not valid; if a database access error occurs or this method * is called on a closed result set * @throws java.sql.SQLFeatureNotSupportedException * if the JDBC driver does not support this method * @since 1.6 */ public String getNString(final int columnIndex) throws SQLException { throw SQLExceptionMapper.getFeatureNotSupportedException("NString not supported"); } /** * Retrieves the value of the designated column in the current row of this ResultSet object as a * String in the Java programming language. It is intended for use when accessing * NCHAR,NVARCHAR and LONGNVARCHAR columns. * * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not * specified, then the label is the name of the column * @return the column value; if the value is SQL NULL, the value returned is null * @throws java.sql.SQLException if the columnLabel is not valid; if a database access error occurs or this method * is called on a closed result set * @throws java.sql.SQLFeatureNotSupportedException * if the JDBC driver does not support this method * @since 1.6 */ public String getNString(final String columnLabel) throws SQLException { throw SQLExceptionMapper.getFeatureNotSupportedException("NString not supported"); } /** * Retrieves the value of the designated column in the current row of this ResultSet object as a * java.io.Reader object. It is intended for use when accessing NCHAR,NVARCHAR * and LONGNVARCHAR columns. * * @param columnIndex the first column is 1, the second is 2, ... * @return a java.io.Reader object that contains the column value; if the value is SQL * NULL, the value returned is null in the Java programming language. * @throws java.sql.SQLException if the columnIndex is not valid; if a database access error occurs or this method * is called on a closed result set * @throws java.sql.SQLFeatureNotSupportedException * if the JDBC driver does not support this method * @since 1.6 */ public Reader getNCharacterStream(final int columnIndex) throws SQLException { return getCharacterStream(columnIndex); } /** * Retrieves the value of the designated column in the current row of this ResultSet object as a * java.io.Reader object. It is intended for use when accessing NCHAR,NVARCHAR * and LONGNVARCHAR columns. * * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not * specified, then the label is the name of the column * @return a java.io.Reader object that contains the column value; if the value is SQL * NULL, the value returned is null in the Java programming language * @throws java.sql.SQLException if the columnLabel is not valid; if a database access error occurs or this method * is called on a closed result set * @throws java.sql.SQLFeatureNotSupportedException * if the JDBC driver does not support this method * @since 1.6 */ public Reader getNCharacterStream(final String columnLabel) throws SQLException { return getCharacterStream(columnLabel); } /** * Updates the designated column with a character stream value, which will have the specified number of bytes. The * driver does the necessary conversion from Java character format to the national character set in the database. It * is intended for use when updating NCHAR,NVARCHAR and LONGNVARCHAR * columns. *

* The updater methods are used to update column values in the current row or the insert row. The updater methods * do not update the underlying database; instead the updateRow or insertRow methods are * called to update the database. * * @param columnIndex the first column is 1, the second is 2, ... * @param x the new column value * @param length the length of the stream * @throws java.sql.SQLException if the columnIndex is not valid; if a database access error occurs; the result set * concurrency is CONCUR_READ_ONLY or this method is called on a closed * result set * @throws java.sql.SQLFeatureNotSupportedException * if the JDBC driver does not support this method * @since 1.6 */ public void updateNCharacterStream(final int columnIndex, final Reader x, final long length) throws SQLException { throw SQLExceptionMapper.getFeatureNotSupportedException("Updates not supported"); } /** * Updates the designated column with a character stream value, which will have the specified number of bytes. The * driver does the necessary conversion from Java character format to the national character set in the database. It * is intended for use when updating NCHAR,NVARCHAR and LONGNVARCHAR * columns. *

* The updater methods are used to update column values in the current row or the insert row. The updater methods * do not update the underlying database; instead the updateRow or insertRow methods are * called to update the database. * * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not * specified, then the label is the name of the column * @param reader the java.io.Reader object containing the new column value * @param length the length of the stream * @throws java.sql.SQLException if the columnLabel is not valid; if a database access error occurs; the result set * concurrency is CONCUR_READ_ONLY or this method is called on a closed * result set * @throws java.sql.SQLFeatureNotSupportedException * if the JDBC driver does not support this method * @since 1.6 */ public void updateNCharacterStream(final String columnLabel, final Reader reader, final long length) throws SQLException { throw SQLExceptionMapper.getFeatureNotSupportedException("Updates not supported"); } /** * Updates the designated column with an ascii stream value, which will have the specified number of bytes. *

* The updater methods are used to update column values in the current row or the insert row. The updater methods * do not update the underlying database; instead the updateRow or insertRow methods are * called to update the database. * * @param columnIndex the first column is 1, the second is 2, ... * @param x the new column value * @param length the length of the stream * @throws java.sql.SQLException if the columnIndex is not valid; if a database access error occurs; the result set * concurrency is CONCUR_READ_ONLY or this method is called on a closed * result set * @throws java.sql.SQLFeatureNotSupportedException * if the JDBC driver does not support this method * @since 1.6 */ public void updateAsciiStream(final int columnIndex, final InputStream x, final long length) throws SQLException { throw SQLExceptionMapper.getFeatureNotSupportedException("Updates not supported"); } /** * Updates the designated column with a binary stream value, which will have the specified number of bytes. *

* The updater methods are used to update column values in the current row or the insert row. The updater methods * do not update the underlying database; instead the updateRow or insertRow methods are * called to update the database. * * @param columnIndex the first column is 1, the second is 2, ... * @param x the new column value * @param length the length of the stream * @throws java.sql.SQLException if the columnIndex is not valid; if a database access error occurs; the result set * concurrency is CONCUR_READ_ONLY or this method is called on a closed * result set * @throws java.sql.SQLFeatureNotSupportedException * if the JDBC driver does not support this method * @since 1.6 */ public void updateBinaryStream(final int columnIndex, final InputStream x, final long length) throws SQLException { throw SQLExceptionMapper.getFeatureNotSupportedException("Updates not supported"); } /** * Updates the designated column with a character stream value, which will have the specified number of bytes. *

* The updater methods are used to update column values in the current row or the insert row. The updater methods * do not update the underlying database; instead the updateRow or insertRow methods are * called to update the database. * * @param columnIndex the first column is 1, the second is 2, ... * @param x the new column value * @param length the length of the stream * @throws java.sql.SQLException if the columnIndex is not valid; if a database access error occurs; the result set * concurrency is CONCUR_READ_ONLY or this method is called on a closed * result set * @throws java.sql.SQLFeatureNotSupportedException * if the JDBC driver does not support this method * @since 1.6 */ public void updateCharacterStream(final int columnIndex, final Reader x, final long length) throws SQLException { throw SQLExceptionMapper.getFeatureNotSupportedException("Updates not supported"); } /** * Updates the designated column with an ascii stream value, which will have the specified number of bytes. *

* The updater methods are used to update column values in the current row or the insert row. The updater methods * do not update the underlying database; instead the updateRow or insertRow methods are * called to update the database. * * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not * specified, then the label is the name of the column * @param x the new column value * @param length the length of the stream * @throws java.sql.SQLException if the columnLabel is not valid; if a database access error occurs; the result set * concurrency is CONCUR_READ_ONLY or this method is called on a closed * result set * @throws java.sql.SQLFeatureNotSupportedException * if the JDBC driver does not support this method * @since 1.6 */ public void updateAsciiStream(final String columnLabel, final InputStream x, final long length) throws SQLException { throw SQLExceptionMapper.getFeatureNotSupportedException("Updates not supported"); } /** * Updates the designated column with a binary stream value, which will have the specified number of bytes. *

* The updater methods are used to update column values in the current row or the insert row. The updater methods * do not update the underlying database; instead the updateRow or insertRow methods are * called to update the database. * * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not * specified, then the label is the name of the column * @param x the new column value * @param length the length of the stream * @throws java.sql.SQLException if the columnLabel is not valid; if a database access error occurs; the result set * concurrency is CONCUR_READ_ONLY or this method is called on a closed * result set * @throws java.sql.SQLFeatureNotSupportedException * if the JDBC driver does not support this method * @since 1.6 */ public void updateBinaryStream(final String columnLabel, final InputStream x, final long length) throws SQLException { throw SQLExceptionMapper.getFeatureNotSupportedException("Updates not supported"); } /** * Updates the designated column with a character stream value, which will have the specified number of bytes. *

* The updater methods are used to update column values in the current row or the insert row. The updater methods * do not update the underlying database; instead the updateRow or insertRow methods are * called to update the database. * * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not * specified, then the label is the name of the column * @param reader the java.io.Reader object containing the new column value * @param length the length of the stream * @throws java.sql.SQLException if the columnLabel is not valid; if a database access error occurs; the result set * concurrency is CONCUR_READ_ONLY or this method is called on a closed * result set * @throws java.sql.SQLFeatureNotSupportedException * if the JDBC driver does not support this method * @since 1.6 */ public void updateCharacterStream(final String columnLabel, final Reader reader, final long length) throws SQLException { throw SQLExceptionMapper.getFeatureNotSupportedException("Updates not supported"); } /** * Updates the designated column using the given input stream, which will have the specified number of bytes. *

*

* The updater methods are used to update column values in the current row or the insert row. The updater methods * do not update the underlying database; instead the updateRow or insertRow methods are * called to update the database. * * @param columnIndex the first column is 1, the second is 2, ... * @param inputStream An object that contains the data to set the parameter value to. * @param length the number of bytes in the parameter data. * @throws java.sql.SQLException if the columnIndex is not valid; if a database access error occurs; the result set * concurrency is CONCUR_READ_ONLY or this method is called on a closed * result set * @throws java.sql.SQLFeatureNotSupportedException * if the JDBC driver does not support this method * @since 1.6 */ public void updateBlob(final int columnIndex, final InputStream inputStream, final long length) throws SQLException { throw SQLExceptionMapper.getFeatureNotSupportedException("Updates not supported"); } /** * Updates the designated column using the given input stream, which will have the specified number of bytes. *

*

* The updater methods are used to update column values in the current row or the insert row. The updater methods * do not update the underlying database; instead the updateRow or insertRow methods are * called to update the database. * * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not * specified, then the label is the name of the column * @param inputStream An object that contains the data to set the parameter value to. * @param length the number of bytes in the parameter data. * @throws java.sql.SQLException if the columnLabel is not valid; if a database access error occurs; the result set * concurrency is CONCUR_READ_ONLY or this method is called on a closed * result set * @throws java.sql.SQLFeatureNotSupportedException * if the JDBC driver does not support this method * @since 1.6 */ public void updateBlob(final String columnLabel, final InputStream inputStream, final long length) throws SQLException { throw SQLExceptionMapper.getFeatureNotSupportedException("Updates not supported"); } /** * Updates the designated column using the given Reader object, which is the given number of characters * long. When a very large UNICODE value is input to a LONGVARCHAR parameter, it may be more practical * to send it via a java.io.Reader object. The JDBC driver will do any necessary conversion from * UNICODE to the database char format. *

*

* The updater methods are used to update column values in the current row or the insert row. The updater methods * do not update the underlying database; instead the updateRow or insertRow methods are * called to update the database. * * @param columnIndex the first column is 1, the second is 2, ... * @param reader An object that contains the data to set the parameter value to. * @param length the number of characters in the parameter data. * @throws java.sql.SQLException if the columnIndex is not valid; if a database access error occurs; the result set * concurrency is CONCUR_READ_ONLY or this method is called on a closed * result set * @throws java.sql.SQLFeatureNotSupportedException * if the JDBC driver does not support this method * @since 1.6 */ public void updateClob(final int columnIndex, final Reader reader, final long length) throws SQLException { throw SQLExceptionMapper.getFeatureNotSupportedException("Updates not supported"); } /** * Updates the designated column using the given Reader object, which is the given number of characters * long. When a very large UNICODE value is input to a LONGVARCHAR parameter, it may be more practical * to send it via a java.io.Reader object. The JDBC driver will do any necessary conversion from * UNICODE to the database char format. *

*

* The updater methods are used to update column values in the current row or the insert row. The updater methods * do not update the underlying database; instead the updateRow or insertRow methods are * called to update the database. * * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not * specified, then the label is the name of the column * @param reader An object that contains the data to set the parameter value to. * @param length the number of characters in the parameter data. * @throws java.sql.SQLException if the columnLabel is not valid; if a database access error occurs; the result set * concurrency is CONCUR_READ_ONLY or this method is called on a closed * result set * @throws java.sql.SQLFeatureNotSupportedException * if the JDBC driver does not support this method * @since 1.6 */ public void updateClob(final String columnLabel, final Reader reader, final long length) throws SQLException { throw SQLExceptionMapper.getFeatureNotSupportedException("Updates not supported"); } /** * Updates the designated column using the given Reader object, which is the given number of characters * long. When a very large UNICODE value is input to a LONGVARCHAR parameter, it may be more practical * to send it via a java.io.Reader object. The JDBC driver will do any necessary conversion from * UNICODE to the database char format. *

*

* The updater methods are used to update column values in the current row or the insert row. The updater methods * do not update the underlying database; instead the updateRow or insertRow methods are * called to update the database. * * @param columnIndex the first column is 1, the second 2, ... * @param reader An object that contains the data to set the parameter value to. * @param length the number of characters in the parameter data. * @throws java.sql.SQLException if the columnIndex is not valid; if the driver does not support national character * sets; if the driver can detect that a data conversion error could occur; this * method is called on a closed result set, if a database access error occurs or the * result set concurrency is CONCUR_READ_ONLY * @throws java.sql.SQLFeatureNotSupportedException * if the JDBC driver does not support this method * @since 1.6 */ public void updateNClob(final int columnIndex, final Reader reader, final long length) throws SQLException { throw SQLExceptionMapper.getFeatureNotSupportedException("Updates not supported"); } /** * Updates the designated column using the given Reader object, which is the given number of characters * long. When a very large UNICODE value is input to a LONGVARCHAR parameter, it may be more practical * to send it via a java.io.Reader object. The JDBC driver will do any necessary conversion from * UNICODE to the database char format. *

*

* The updater methods are used to update column values in the current row or the insert row. The updater methods * do not update the underlying database; instead the updateRow or insertRow methods are * called to update the database. * * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not * specified, then the label is the name of the column * @param reader An object that contains the data to set the parameter value to. * @param length the number of characters in the parameter data. * @throws java.sql.SQLException if the columnLabel is not valid; if the driver does not support national character * sets; if the driver can detect that a data conversion error could occur; this * method is called on a closed result set; if a database access error occurs or the * result set concurrency is CONCUR_READ_ONLY * @throws java.sql.SQLFeatureNotSupportedException * if the JDBC driver does not support this method * @since 1.6 */ public void updateNClob(final String columnLabel, final Reader reader, final long length) throws SQLException { throw SQLExceptionMapper.getFeatureNotSupportedException("Updates not supported"); } /** * Updates the designated column with a character stream value. The data will be read from the stream as needed * until end-of-stream is reached. The driver does the necessary conversion from Java character format to the * national character set in the database. It is intended for use when updating * NCHAR,NVARCHAR and LONGNVARCHAR columns. *

* The updater methods are used to update column values in the current row or the insert row. The updater methods * do not update the underlying database; instead the updateRow or insertRow methods are * called to update the database. *

*

Note: Consult your JDBC driver documentation to determine if it might be more efficient to use a * version of updateNCharacterStream which takes a length parameter. * * @param columnIndex the first column is 1, the second is 2, ... * @param x the new column value * @throws java.sql.SQLException if the columnIndex is not valid; if a database access error occurs; the result set * concurrency is CONCUR_READ_ONLY or this method is called on a closed * result set * @throws java.sql.SQLFeatureNotSupportedException * if the JDBC driver does not support this method * @since 1.6 */ public void updateNCharacterStream(final int columnIndex, final Reader x) throws SQLException { throw SQLExceptionMapper.getFeatureNotSupportedException("Updates not supported"); } /** * Updates the designated column with a character stream value. The data will be read from the stream as needed * until end-of-stream is reached. The driver does the necessary conversion from Java character format to the * national character set in the database. It is intended for use when updating * NCHAR,NVARCHAR and LONGNVARCHAR columns. *

* The updater methods are used to update column values in the current row or the insert row. The updater methods * do not update the underlying database; instead the updateRow or insertRow methods are * called to update the database. *

*

Note: Consult your JDBC driver documentation to determine if it might be more efficient to use a * version of updateNCharacterStream which takes a length parameter. * * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not * specified, then the label is the name of the column * @param reader the java.io.Reader object containing the new column value * @throws java.sql.SQLException if the columnLabel is not valid; if a database access error occurs; the result set * concurrency is CONCUR_READ_ONLY or this method is called on a closed * result set * @throws java.sql.SQLFeatureNotSupportedException * if the JDBC driver does not support this method * @since 1.6 */ public void updateNCharacterStream(final String columnLabel, final Reader reader) throws SQLException { throw SQLExceptionMapper.getFeatureNotSupportedException("Updates not supported"); } /** * Updates the designated column with an ascii stream value. The data will be read from the stream as needed until * end-of-stream is reached. *

* The updater methods are used to update column values in the current row or the insert row. The updater methods * do not update the underlying database; instead the updateRow or insertRow methods are * called to update the database. *

*

Note: Consult your JDBC driver documentation to determine if it might be more efficient to use a * version of updateAsciiStream which takes a length parameter. * * @param columnIndex the first column is 1, the second is 2, ... * @param x the new column value * @throws java.sql.SQLException if the columnIndex is not valid; if a database access error occurs; the result set * concurrency is CONCUR_READ_ONLY or this method is called on a closed * result set * @throws java.sql.SQLFeatureNotSupportedException * if the JDBC driver does not support this method * @since 1.6 */ public void updateAsciiStream(final int columnIndex, final InputStream x) throws SQLException { throw SQLExceptionMapper.getFeatureNotSupportedException("Updates not supported"); } /** * Updates the designated column with a binary stream value. The data will be read from the stream as needed until * end-of-stream is reached. *

* The updater methods are used to update column values in the current row or the insert row. The updater methods * do not update the underlying database; instead the updateRow or insertRow methods are * called to update the database. *

*

Note: Consult your JDBC driver documentation to determine if it might be more efficient to use a * version of updateBinaryStream which takes a length parameter. * * @param columnIndex the first column is 1, the second is 2, ... * @param x the new column value * @throws java.sql.SQLException if the columnIndex is not valid; if a database access error occurs; the result set * concurrency is CONCUR_READ_ONLY or this method is called on a closed * result set * @throws java.sql.SQLFeatureNotSupportedException * if the JDBC driver does not support this method * @since 1.6 */ public void updateBinaryStream(final int columnIndex, final InputStream x) throws SQLException { throw SQLExceptionMapper.getFeatureNotSupportedException("Updates not supported"); } /** * Updates the designated column with a character stream value. The data will be read from the stream as needed * until end-of-stream is reached. *

* The updater methods are used to update column values in the current row or the insert row. The updater methods * do not update the underlying database; instead the updateRow or insertRow methods are * called to update the database. *

*

Note: Consult your JDBC driver documentation to determine if it might be more efficient to use a * version of updateCharacterStream which takes a length parameter. * * @param columnIndex the first column is 1, the second is 2, ... * @param x the new column value * @throws java.sql.SQLException if the columnIndex is not valid; if a database access error occurs; the result set * concurrency is CONCUR_READ_ONLY or this method is called on a closed * result set * @throws java.sql.SQLFeatureNotSupportedException * if the JDBC driver does not support this method * @since 1.6 */ public void updateCharacterStream(final int columnIndex, final Reader x) throws SQLException { throw SQLExceptionMapper.getFeatureNotSupportedException("Updates not supported"); } /** * Updates the designated column with an ascii stream value. The data will be read from the stream as needed until * end-of-stream is reached. *

* The updater methods are used to update column values in the current row or the insert row. The updater methods * do not update the underlying database; instead the updateRow or insertRow methods are * called to update the database. *

*

Note: Consult your JDBC driver documentation to determine if it might be more efficient to use a * version of updateAsciiStream which takes a length parameter. * * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not * specified, then the label is the name of the column * @param x the new column value * @throws java.sql.SQLException if the columnLabel is not valid; if a database access error occurs; the result set * concurrency is CONCUR_READ_ONLY or this method is called on a closed * result set * @throws java.sql.SQLFeatureNotSupportedException * if the JDBC driver does not support this method * @since 1.6 */ public void updateAsciiStream(final String columnLabel, final InputStream x) throws SQLException { throw SQLExceptionMapper.getFeatureNotSupportedException("Updates not supported"); } /** * Updates the designated column with a binary stream value. The data will be read from the stream as needed until * end-of-stream is reached. *

* The updater methods are used to update column values in the current row or the insert row. The updater methods * do not update the underlying database; instead the updateRow or insertRow methods are * called to update the database. *

*

Note: Consult your JDBC driver documentation to determine if it might be more efficient to use a * version of updateBinaryStream which takes a length parameter. * * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not * specified, then the label is the name of the column * @param x the new column value * @throws java.sql.SQLException if the columnLabel is not valid; if a database access error occurs; the result set * concurrency is CONCUR_READ_ONLY or this method is called on a closed * result set * @throws java.sql.SQLFeatureNotSupportedException * if the JDBC driver does not support this method * @since 1.6 */ public void updateBinaryStream(final String columnLabel, final InputStream x) throws SQLException { throw SQLExceptionMapper.getFeatureNotSupportedException("Updates not supported"); } /** * Updates the designated column with a character stream value. The data will be read from the stream as needed * until end-of-stream is reached. *

* The updater methods are used to update column values in the current row or the insert row. The updater methods * do not update the underlying database; instead the updateRow or insertRow methods are * called to update the database. *

*

Note: Consult your JDBC driver documentation to determine if it might be more efficient to use a * version of updateCharacterStream which takes a length parameter. * * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not * specified, then the label is the name of the column * @param reader the java.io.Reader object containing the new column value * @throws java.sql.SQLException if the columnLabel is not valid; if a database access error occurs; the result set * concurrency is CONCUR_READ_ONLY or this method is called on a closed * result set * @throws java.sql.SQLFeatureNotSupportedException * if the JDBC driver does not support this method * @since 1.6 */ public void updateCharacterStream(final String columnLabel, final Reader reader) throws SQLException { throw SQLExceptionMapper.getFeatureNotSupportedException("Updates not supported"); } /** * Updates the designated column using the given input stream. The data will be read from the stream as needed until * end-of-stream is reached. *

* The updater methods are used to update column values in the current row or the insert row. The updater methods * do not update the underlying database; instead the updateRow or insertRow methods are * called to update the database. *

*

Note: Consult your JDBC driver documentation to determine if it might be more efficient to use a * version of updateBlob which takes a length parameter. * * @param columnIndex the first column is 1, the second is 2, ... * @param inputStream An object that contains the data to set the parameter value to. * @throws java.sql.SQLException if the columnIndex is not valid; if a database access error occurs; the result set * concurrency is CONCUR_READ_ONLY or this method is called on a closed * result set * @throws java.sql.SQLFeatureNotSupportedException * if the JDBC driver does not support this method * @since 1.6 */ public void updateBlob(final int columnIndex, final InputStream inputStream) throws SQLException { throw SQLExceptionMapper.getFeatureNotSupportedException("Updates not supported"); } /** * Updates the designated column using the given input stream. The data will be read from the stream as needed until * end-of-stream is reached. *

* The updater methods are used to update column values in the current row or the insert row. The updater methods * do not update the underlying database; instead the updateRow or insertRow methods are * called to update the database. *

*

Note: Consult your JDBC driver documentation to determine if it might be more efficient to use a * version of updateBlob which takes a length parameter. * * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not * specified, then the label is the name of the column * @param inputStream An object that contains the data to set the parameter value to. * @throws java.sql.SQLException if the columnLabel is not valid; if a database access error occurs; the result set * concurrency is CONCUR_READ_ONLY or this method is called on a closed * result set * @throws java.sql.SQLFeatureNotSupportedException * if the JDBC driver does not support this method * @since 1.6 */ public void updateBlob(final String columnLabel, final InputStream inputStream) throws SQLException { throw SQLExceptionMapper.getFeatureNotSupportedException("Updates not supported"); } /** * Updates the designated column using the given Reader object. The data will be read from the stream * as needed until end-of-stream is reached. The JDBC driver will do any necessary conversion from UNICODE to the * database char format. *

*

* The updater methods are used to update column values in the current row or the insert row. The updater methods * do not update the underlying database; instead the updateRow or insertRow methods are * called to update the database. *

*

Note: Consult your JDBC driver documentation to determine if it might be more efficient to use a * version of updateClob which takes a length parameter. * * @param columnIndex the first column is 1, the second is 2, ... * @param reader An object that contains the data to set the parameter value to. * @throws java.sql.SQLException if the columnIndex is not valid; if a database access error occurs; the result set * concurrency is CONCUR_READ_ONLY or this method is called on a closed * result set * @throws java.sql.SQLFeatureNotSupportedException * if the JDBC driver does not support this method * @since 1.6 */ public void updateClob(final int columnIndex, final Reader reader) throws SQLException { throw SQLExceptionMapper.getFeatureNotSupportedException("Updates not supported"); } /** * Updates the designated column using the given Reader object. The data will be read from the stream * as needed until end-of-stream is reached. The JDBC driver will do any necessary conversion from UNICODE to the * database char format. *

*

* The updater methods are used to update column values in the current row or the insert row. The updater methods * do not update the underlying database; instead the updateRow or insertRow methods are * called to update the database. *

*

Note: Consult your JDBC driver documentation to determine if it might be more efficient to use a * version of updateClob which takes a length parameter. * * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not * specified, then the label is the name of the column * @param reader An object that contains the data to set the parameter value to. * @throws java.sql.SQLException if the columnLabel is not valid; if a database access error occurs; the result set * concurrency is CONCUR_READ_ONLY or this method is called on a closed * result set * @throws java.sql.SQLFeatureNotSupportedException * if the JDBC driver does not support this method * @since 1.6 */ public void updateClob(final String columnLabel, final Reader reader) throws SQLException { throw SQLExceptionMapper.getFeatureNotSupportedException("Updates not supported"); } /** * Updates the designated column using the given Reader *

* The data will be read from the stream as needed until end-of-stream is reached. The JDBC driver will do any * necessary conversion from UNICODE to the database char format. *

*

* The updater methods are used to update column values in the current row or the insert row. The updater methods * do not update the underlying database; instead the updateRow or insertRow methods are * called to update the database. *

*

Note: Consult your JDBC driver documentation to determine if it might be more efficient to use a * version of updateNClob which takes a length parameter. * * @param columnIndex the first column is 1, the second 2, ... * @param reader An object that contains the data to set the parameter value to. * @throws java.sql.SQLException if the columnIndex is not valid; if the driver does not support national character * sets; if the driver can detect that a data conversion error could occur; this * method is called on a closed result set, if a database access error occurs or the * result set concurrency is CONCUR_READ_ONLY * @throws java.sql.SQLFeatureNotSupportedException * if the JDBC driver does not support this method * @since 1.6 */ public void updateNClob(final int columnIndex, final Reader reader) throws SQLException { throw SQLExceptionMapper.getFeatureNotSupportedException("Updates not supported"); } /** * Updates the designated column using the given Reader object. The data will be read from the stream * as needed until end-of-stream is reached. The JDBC driver will do any necessary conversion from UNICODE to the * database char format. *

*

* The updater methods are used to update column values in the current row or the insert row. The updater methods * do not update the underlying database; instead the updateRow or insertRow methods are * called to update the database. *

*

Note: Consult your JDBC driver documentation to determine if it might be more efficient to use a * version of updateNClob which takes a length parameter. * * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not * specified, then the label is the name of the column * @param reader An object that contains the data to set the parameter value to. * @throws java.sql.SQLException if the columnLabel is not valid; if the driver does not support national character * sets; if the driver can detect that a data conversion error could occur; this * method is called on a closed result set; if a database access error occurs or the * result set concurrency is CONCUR_READ_ONLY * @throws java.sql.SQLFeatureNotSupportedException * if the JDBC driver does not support this method * @since 1.6 */ public void updateNClob(final String columnLabel, final Reader reader) throws SQLException { throw SQLExceptionMapper.getFeatureNotSupportedException("Updates not supported"); } public boolean getBoolean(final int i) throws SQLException { return getValueObject(i).getBoolean(); } public byte getByte(final int i) throws SQLException { return getValueObject(i).getByte(); } public short getShort(final int i) throws SQLException { return getValueObject(i).getShort(); } public long getLong(final int i) throws SQLException { return getValueObject(i).getLong(); } public float getFloat(final int i) throws SQLException { return getValueObject(i).getFloat(); } public double getDouble(final int i) throws SQLException { return getValueObject(i).getDouble(); } /** * Retrieves the value of the designated column in the current row of this ResultSet object as a * java.sql.BigDecimal in the Java programming language. * * @param columnIndex the first column is 1, the second is 2, ... * @param scale the number of digits to the right of the decimal point * @return the column value; if the value is SQL NULL, the value returned is null * @throws java.sql.SQLException if the columnIndex is not valid; if a database access error occurs or this method * is called on a closed result set * @throws java.sql.SQLFeatureNotSupportedException * if the JDBC driver does not support this method * @deprecated */ public BigDecimal getBigDecimal(final int columnIndex, final int scale) throws SQLException { return getValueObject(columnIndex).getBigDecimal(); } /** * Retrieves the value of the designated column in the current row of this ResultSet object as a * byte array in the Java programming language. The bytes represent the raw values returned by the * driver. * * @param columnIndex the first column is 1, the second is 2, ... * @return the column value; if the value is SQL NULL, the value returned is null * @throws java.sql.SQLException if the columnIndex is not valid; if a database access error occurs or this method * is called on a closed result set */ public byte[] getBytes(final int columnIndex) throws SQLException { return getValueObject(columnIndex).getBytes(); } /** * Retrieves the value of the designated column in the current row of this ResultSet object as a * java.sql.Date object in the Java programming language. * * @param columnIndex the first column is 1, the second is 2, ... * @return the column value; if the value is SQL NULL, the value returned is null * @throws java.sql.SQLException if the columnIndex is not valid; if a database access error occurs or this method * is called on a closed result set */ public Date getDate(final int columnIndex) throws SQLException { try { return getValueObject(columnIndex).getDate(); } catch (ParseException e) { throw SQLExceptionMapper.getSQLException("Could not parse field as date", e); } } /** * Retrieves the value of the designated column in the current row of this ResultSet object as a * java.sql.Time object in the Java programming language. * * @param columnIndex the first column is 1, the second is 2, ... * @return the column value; if the value is SQL NULL, the value returned is null * @throws java.sql.SQLException if the columnIndex is not valid; if a database access error occurs or this method * is called on a closed result set */ public Time getTime(final int columnIndex) throws SQLException { try { return getValueObject(columnIndex).getTime(); } catch (ParseException e) { throw SQLExceptionMapper.getSQLException("Could not parse column as time, was: \"" + getValueObject(columnIndex).getString() + "\"", e); } } /** * Retrieves the value of the designated column in the current row of this ResultSet object as a * java.sql.Timestamp object in the Java programming language. * * @param columnIndex the first column is 1, the second is 2, ... * @return the column value; if the value is SQL NULL, the value returned is null * @throws java.sql.SQLException if the columnIndex is not valid; if a database access error occurs or this method * is called on a closed result set */ public Timestamp getTimestamp(final int columnIndex) throws SQLException { try { return getValueObject(columnIndex).getTimestamp(); } catch (ParseException e) { throw SQLExceptionMapper.getSQLException("Could not parse field as date"); } } /** * Retrieves the value of the designated column in the current row of this ResultSet object as a stream * of ASCII characters. The value can then be read in chunks from the stream. This method is particularly suitable * for retrieving large LONGVARCHAR values. The JDBC driver will do any necessary conversion from the * database format into ASCII. *

*

Note: All the data in the returned stream must be read prior to getting the value of any other column. * The next call to a getter method implicitly closes the stream. Also, a stream may return 0 when the * method InputStream.available is called whether there is data available or not. * * @param columnIndex the first column is 1, the second is 2, ... * @return a Java input stream that delivers the database column value as a stream of one-byte ASCII characters; if * the value is SQL NULL, the value returned is null * @throws java.sql.SQLException if the columnIndex is not valid; if a database access error occurs or this method * is called on a closed result set */ public InputStream getAsciiStream(final int columnIndex) throws SQLException { return getValueObject(columnIndex).getInputStream(); } /** * Retrieves the value of the designated column in the current row of this ResultSet object as as a * stream of two-byte 3 characters. The first byte is the high byte; the second byte is the low byte. *

* The value can then be read in chunks from the stream. This method is particularly suitable for retrieving large * LONGVARCHARvalues. The JDBC driver will do any necessary conversion from the database format into * Unicode. *

*

Note: All the data in the returned stream must be read prior to getting the value of any other column. * The next call to a getter method implicitly closes the stream. Also, a stream may return 0 when the * method InputStream.available is called, whether there is data available or not. * * @param columnIndex the first column is 1, the second is 2, ... * @return a Java input stream that delivers the database column value as a stream of two-byte Unicode characters; * if the value is SQL NULL, the value returned is null * @throws java.sql.SQLException if the columnIndex is not valid; if a database access error occurs or this method * is called on a closed result set * @throws java.sql.SQLFeatureNotSupportedException * if the JDBC driver does not support this method * @deprecated use getCharacterStream in place of getUnicodeStream */ public InputStream getUnicodeStream(final int columnIndex) throws SQLException { return getValueObject(columnIndex).getInputStream(); } /** * Retrieves the value of the designated column in the current row of this ResultSet object as a stream * of uninterpreted bytes. The value can then be read in chunks from the stream. This method is particularly * suitable for retrieving large LONGVARBINARY values. *

*

Note: All the data in the returned stream must be read prior to getting the value of any other column. * The next call to a getter method implicitly closes the stream. Also, a stream may return 0 when the * method InputStream.available is called whether there is data available or not. * * @param columnIndex the first column is 1, the second is 2, ... * @return a Java input stream that delivers the database column value as a stream of uninterpreted bytes; if the * value is SQL NULL, the value returned is null * @throws java.sql.SQLException if the columnIndex is not valid; if a database access error occurs or this method * is called on a closed result set */ public InputStream getBinaryStream(final int columnIndex) throws SQLException { if(protocol.supportsPBMS()) { try { return getValueObject(columnIndex).getPBMSStream(protocol); } catch (QueryException e) { throw SQLExceptionMapper.get(e); } catch (IOException e) { throw SQLExceptionMapper.getSQLException("Could not read back the data using http", e); } } return getValueObject(columnIndex).getBinaryInputStream(); } /** * Retrieves the value of the designated column in the current row of this ResultSet object as a * String in the Java programming language. * * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not * specified, then the label is the name of the column * @return the column value; if the value is SQL NULL, the value returned is null * @throws java.sql.SQLException if the columnLabel is not valid; if a database access error occurs or this method * is called on a closed result set */ public String getString(final String columnLabel) throws SQLException { final ValueObject vo = getValueObject(columnLabel); return vo.getString(); } /** * Retrieves the value of the designated column in the current row of this ResultSet object as a * boolean in the Java programming language. *

*

If the designated column has a datatype of CHAR or VARCHAR and contains a "0" or has a datatype of BIT, * TINYINT, SMALLINT, INTEGER or BIGINT and contains a 0, a value of false is returned. If the * designated column has a datatype of CHAR or VARCHAR and contains a "1" or has a datatype of BIT, TINYINT, * SMALLINT, INTEGER or BIGINT and contains a 1, a value of true is returned. * * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not * specified, then the label is the name of the column * @return the column value; if the value is SQL NULL, the value returned is false * @throws java.sql.SQLException if the columnLabel is not valid; if a database access error occurs or this method * is called on a closed result set */ public boolean getBoolean(final String columnLabel) throws SQLException { return getValueObject(columnLabel).getBoolean(); } /** * Retrieves the value of the designated column in the current row of this ResultSet object as a * byte in the Java programming language. * * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not * specified, then the label is the name of the column * @return the column value; if the value is SQL NULL, the value returned is 0 * @throws java.sql.SQLException if the columnLabel is not valid; if a database access error occurs or this method * is called on a closed result set */ public byte getByte(final String columnLabel) throws SQLException { return getValueObject(columnLabel).getByte(); } /** * Retrieves the value of the designated column in the current row of this ResultSet object as a * short in the Java programming language. * * @param columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not * specified, then the label is the name of the column * @return the column value; if the value is SQL NULL, the value returned is 0 * @throws java.sql.SQLException if the columnLabel is not valid; if a database access error occurs or this method * is called on a closed result set */ public short getShort(final String columnLabel) throws SQLException { return getValueObject(columnLabel).getShort(); } /** * Returns an object that implements the given interface to allow access to non-standard methods, or standard * methods not exposed by the proxy. *

* If the receiver implements the interface then the result is the receiver or a proxy for the receiver. If the * receiver is a wrapper and the wrapped object implements the interface then the result is the wrapped object or a * proxy for the wrapped object. Otherwise return the the result of calling unwrap recursively on the * wrapped object or a proxy for that result. If the receiver is not a wrapper and does not implement the interface, * then an SQLException is thrown. * * @param iface A Class defining an interface that the result must implement. * @return an object that implements the interface. May be a proxy for the actual implementing object. * @throws java.sql.SQLException If no object found that implements the interface * @since 1.6 */ public T unwrap(final Class iface) throws SQLException { return null; } /** * Returns true if this either implements the interface argument or is directly or indirectly a wrapper for an * object that does. Returns false otherwise. If this implements the interface then return true, else if this is a * wrapper then return the result of recursively calling isWrapperFor on the wrapped object. If this * does not implement the interface and is not a wrapper, return false. This method should be implemented as a * low-cost operation compared to unwrap so that callers can use this method to avoid expensive * unwrap calls that may fail. If this method returns true then calling unwrap with the * same argument should succeed. * * @param iface a Class defining an interface. * @return true if this implements the interface or directly or indirectly wraps an object that does. * @throws java.sql.SQLException if an error occurs while determining whether this is a wrapper for an object with * the given interface. * @since 1.6 */ public boolean isWrapperFor(final Class iface) throws SQLException { return false; } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy