|
Java example source code file (JoinRowSetImpl.java)
The JoinRowSetImpl.java Java example source code/* * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. Oracle designates this * particular file as subject to the "Classpath" exception as provided * by Oracle in the LICENSE file that accompanied this code. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * version 2 for more details (a copy is included in the LICENSE file that * accompanied this code). * * You should have received a copy of the GNU General Public License version * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA * or visit www.oracle.com if you need additional information or have any * questions. */ package com.sun.rowset; import java.sql.*; import javax.sql.*; import javax.naming.*; import java.io.*; import java.math.*; import java.util.*; import javax.sql.rowset.*; import javax.sql.rowset.spi.SyncProvider; import javax.sql.rowset.spi.SyncProviderException; /** * The standard implementation of the <code>JoinRowSet * interface providing an SQL <code>JOIN between* <P> * If the number is negative, the cursor moves to an absolute row position * with respect to the end of the rowset. For example, calling * <code>absolute(-1) positions the cursor on the last row, * <code>absolute(-2) moves it on the next-to-last row, and so on. * If the <code>JoinRowSetImpl object crs has five rows,
* the following command moves the cursor to the fourth-to-last row, which
* in the case of a rowset with five rows, is also the second row, counting
* from the beginning.
* <PRE>
*
* crs.absolute(-4);
*
* </code>
*
* If the number specified is larger than the number of rows, the cursor
* will move to the position after the last row. If the number specified
* would move the cursor one or more rows before the first row, the cursor
* moves to the position before the first row.
* <P>
* Note: Calling <code>absolute(1) is the same as calling the
* method <code>first(). Calling absolute(-1) is the
* same as calling <code>last().
*
* @param row a positive number to indicate the row, starting row numbering from
* the first row, which is <code>1; a negative number to indicate
* the row, starting row numbering from the last row, which is
* <code>-1; must not be 0
* @return <code>true if the cursor is on the rowset; false
* otherwise
* @throws SQLException if the given cursor position is <code>0 or the
* type of this rowset is <code>ResultSet.TYPE_FORWARD_ONLY
*/
public boolean absolute(int row) throws SQLException {
return crsInternal.absolute(row);
}
/**
* Moves the cursor the specified number of rows from the current
* position, with a positive number moving it forward and a
* negative number moving it backward.
* <P>
* If the number is positive, the cursor moves the specified number of
* rows toward the end of the rowset, starting at the current row.
* For example, the following command, in which
* <code>crs is a JoinRowSetImpl object with 100 rows,
* moves the cursor forward four rows from the current row. If the
* current row is 50, the cursor would move to row 54.
* <PRE>
*
* crs.relative(4);
*
* </code>
* <P>
* If the number is negative, the cursor moves back toward the beginning
* the specified number of rows, starting at the current row.
* For example, calling the method
* <code>absolute(-1) positions the cursor on the last row,
* <code>absolute(-2) moves it on the next-to-last row, and so on.
* If the <code>JoinRowSetImpl object crs has five rows,
* the following command moves the cursor to the fourth-to-last row, which
* in the case of a rowset with five rows, is also the second row
* from the beginning.
* <PRE>
*
* crs.absolute(-4);
*
* </code>
*
* If the number specified is larger than the number of rows, the cursor
* will move to the position after the last row. If the number specified
* would move the cursor one or more rows before the first row, the cursor
* moves to the position before the first row. In both cases, this method
* throws an <code>SQLException .
* <P>
* Note: Calling <code>absolute(1) is the same as calling the
* method <code>first(). Calling absolute(-1) is the
* same as calling <code>last(). Calling relative(0)
* is valid, but it does not change the cursor position.
*
* @param rows an <code>int indicating the number of rows to move
* the cursor, starting at the current row; a positive number
* moves the cursor forward; a negative number moves the cursor
* backward; must not move the cursor past the valid
* rows
* @return <code>true if the cursor is on a row in this
* <code>JoinRowSetImpl object; false
* otherwise
* @throws SQLException if there are no rows in this rowset, the cursor is
* positioned either before the first row or after the last row, or
* the rowset is type <code>ResultSet.TYPE_FORWARD_ONLY
*/
public boolean relative(int rows) throws SQLException {
return crsInternal.relative(rows);
}
/**
* Moves this <code>JoinRowSetImpl object's cursor to the
* previous row and returns <code>true if the cursor is on
* a valid row or <code>false if it is not.
* This method also notifies all listeners registered with this
* <code>JoinRowSetImpl object that its cursor has moved.
* <P>
* Note: calling the method <code>previous() is not the same
* as calling the method <code>relative(-1). This is true
* because it is possible to call <code>previous() from the insert
* row, from after the last row, or from the current row, whereas
* <code>relative may only be called from the current row.
* <P>
* The method <code>previous may used in a while
* loop to iterate through a rowset starting after the last row
* and moving toward the beginning. The loop ends when <code>previous
* returns <code>false, meaning that there are no more rows.
* For example, the following code fragment retrieves all the data in
* the <code>JoinRowSetImpl object crs , which has
* three columns. Note that the cursor must initially be positioned
* after the last row so that the first call to the method
* <code>previous places the cursor on the last line.
* <PRE>
*
* crs.afterLast();
* while (previous()) {
* String name = crs.getString(1);
* int age = crs.getInt(2);
* short ssn = crs.getShort(3);
* System.out.println(name + " " + age + " " + ssn);
* }
*
* </code>
* This method throws an <code>SQLException if the cursor is not
* on a row in the rowset, before the first row, or after the last row.
*
* @return <code>true if the cursor is on a valid row;
* <code>false if it is before the first row or after the
* last row
* @throws SQLException if the cursor is not on a valid position or the
* type of this rowset is <code>ResultSet.TYPE_FORWARD_ONLY
*/
public boolean previous() throws SQLException {
return crsInternal.previous();
}
/**
* Returns the index of the column whose name is <i>columnName.
*
* @param columnName a <code>String object giving the name of the
* column for which the index will be returned; the name must
* match the SQL name of a column in this <code>JoinRowSet
* object, ignoring case
* @throws SQLException if the given column name does not match one of the
* column names for this <code>JoinRowSet object
*/
public int findColumn(String columnName) throws SQLException {
return crsInternal.findColumn(columnName);
}
/**
* Indicates whether the current row of this <code>JoinRowSetImpl
* object has been updated. The value returned
* depends on whether this rowset can detect updates: <code>false
* will always be returned if it does not detect updates.
*
* @return <code>true if the row has been visibly updated
* by the owner or another and updates are detected;
* <code>false otherwise
* @throws SQLException if the cursor is on the insert row or not
* on a valid row
*
* @see DatabaseMetaData#updatesAreDetected
*/
public boolean rowUpdated() throws SQLException {
return crsInternal.rowUpdated();
}
/**
* Indicates whether the designated column of the current row of
* this <code>JoinRowSetImpl object has been updated. The
* value returned depends on whether this rowset can detcted updates:
* <code>false will always be returned if it does not detect updates.
*
* @return <code>true if the column updated
* <code>false otherwse
* @throws SQLException if the cursor is on the insert row or not
* on a valid row
* @see DatabaseMetaData#updatesAreDetected
*/
public boolean columnUpdated(int indexColumn) throws SQLException {
return crsInternal.columnUpdated(indexColumn);
}
/**
* Indicates whether the current row has been inserted. The value returned
* depends on whether or not the rowset can detect visible inserts.
*
* @return <code>true if a row has been inserted and inserts are detected;
* <code>false otherwise
* @throws SQLException if the cursor is on the insert row or not
* not on a valid row
*
* @see DatabaseMetaData#insertsAreDetected
*/
public boolean rowInserted() throws SQLException {
return crsInternal.rowInserted();
}
/**
* Indicates whether the current row has been deleted. A deleted row
* may leave a visible "hole" in a rowset. This method can be used to
* detect such holes if the rowset can detect deletions. This method
* will always return <code>false if this rowset cannot detect
* deletions.
*
* @return <code>true if (1)the current row is blank, indicating that
* the row has been deleted, and (2)deletions are detected;
* <code>false otherwise
* @throws SQLException if the cursor is on a valid row in this rowset
* @see DatabaseMetaData#deletesAreDetected
*/
public boolean rowDeleted() throws SQLException {
return crsInternal.rowDeleted();
}
/**
* Sets the designated nullable column in the current row or the
* insert row of this <code>JoinRowSetImpl object with
* <code>null value.
* <P>
* This method updates a column value in the current row or the insert
* row of this rowset; however, another method must be called to complete
* the update process. If the cursor is on a row in the rowset, the
* method {@link #updateRow} must be called to mark the row as updated
* and to notify listeners that the row has changed.
* If the cursor is on the insert row, the method {@link #insertRow}
* must be called to insert the new row into this rowset and to notify
* listeners that a row has changed.
* <P>
* In order to propagate updates in this rowset to the underlying
* data source, an application must call the method acceptChanges
* after it calls either <code>updateRow or insertRow .
*
* @param columnIndex the first column is <code>1, the second
* is <code>2, and so on; must be 1 or larger
* and equal to or less than the number of columns in this rowset
* @throws SQLException if (1) the given column index is out of bounds,
* (2) the cursor is not on one of this rowset's rows or its
* insert row, or (3) this rowset is
* <code>ResultSet.CONCUR_READ_ONLY
*/
public void updateNull(int columnIndex) throws SQLException {
crsInternal.updateNull(columnIndex);
}
/**
* Sets the designated column in either the current row or the insert
* row of this <code>JoinRowSetImpl object with the given
* <code>boolean value.
* <P>
* This method updates a column value in the current row or the insert
* row of this rowset, but it does not update the database.
* If the cursor is on a row in the rowset, the
* method {@link #updateRow} must be called to update the database.
* If the cursor is on the insert row, the method {@link #insertRow}
* must be called, which will insert the new row into both this rowset
* and the database. Both of these methods must be called before the
* cursor moves to another row.
*
* @param columnIndex the first column is <code>1, the second
* is <code>2, and so on; must be 1 or larger
* and equal to or less than the number of columns in this rowset
* @param x the new column value
* @throws SQLException if (1) the given column index is out of bounds,
* (2) the cursor is not on one of this rowset's rows or its
* insert row, or (3) this rowset is
* <code>ResultSet.CONCUR_READ_ONLY
*/
public void updateBoolean(int columnIndex, boolean x) throws SQLException {
crsInternal.updateBoolean(columnIndex, x);
}
/**
* Sets the designated column in either the current row or the insert
* row of this <code>JoinRowSetImpl object with the given
* <code>byte value.
* <P>
* This method updates a column value in the current row or the insert
* row of this rowset, but it does not update the database.
* If the cursor is on a row in the rowset, the
* method {@link #updateRow} must be called to update the database.
* If the cursor is on the insert row, the method {@link #insertRow}
* must be called, which will insert the new row into both this rowset
* and the database. Both of these methods must be called before the
* cursor moves to another row.
*
* @param columnIndex the first column is <code>1, the second
* is <code>2, and so on; must be 1 or larger
* and equal to or less than the number of columns in this rowset
* @param x the new column value
* @throws SQLException if (1) the given column index is out of bounds,
* (2) the cursor is not on one of this rowset's rows or its
* insert row, or (3) this rowset is
* <code>ResultSet.CONCUR_READ_ONLY
*/
public void updateByte(int columnIndex, byte x) throws SQLException {
crsInternal.updateByte(columnIndex, x);
}
/**
* Sets the designated column in either the current row or the insert
* row of this <code>JoinRowSetImpl object with the given
* <code>short value.
* <P>
* This method updates a column value in the current row or the insert
* row of this rowset, but it does not update the database.
* If the cursor is on a row in the rowset, the
* method {@link #updateRow} must be called to update the database.
* If the cursor is on the insert row, the method {@link #insertRow}
* must be called, which will insert the new row into both this rowset
* and the database. Both of these methods must be called before the
* cursor moves to another row.
*
* @param columnIndex the first column is <code>1, the second
* is <code>2, and so on; must be 1 or larger
* and equal to or less than the number of columns in this rowset
* @param x the new column value
* @throws SQLException if (1) the given column index is out of bounds,
* (2) the cursor is not on one of this rowset's rows or its
* insert row, or (3) this rowset is
* <code>ResultSet.CONCUR_READ_ONLY
*/
public void updateShort(int columnIndex, short x) throws SQLException {
crsInternal.updateShort(columnIndex, x);
}
/**
* Sets the designated column in either the current row or the insert
* row of this <code>JoinRowSetImpl object with the given
* <code>int value.
* <P>
* This method updates a column value in the current row or the insert
* row of this rowset, but it does not update the database.
* If the cursor is on a row in the rowset, the
* method {@link #updateRow} must be called to update the database.
* If the cursor is on the insert row, the method {@link #insertRow}
* must be called, which will insert the new row into both this rowset
* and the database. Both of these methods must be called before the
* cursor moves to another row.
*
* @param columnIndex the first column is <code>1, the second
* is <code>2, and so on; must be 1 or larger
* and equal to or less than the number of columns in this rowset
* @param x the new column value
* @throws SQLException if (1) the given column index is out of bounds,
* (2) the cursor is not on one of this rowset's rows or its
* insert row, or (3) this rowset is
* <code>ResultSet.CONCUR_READ_ONLY
*/
public void updateInt(int columnIndex, int x) throws SQLException {
crsInternal.updateInt(columnIndex, x);
}
/**
* Sets the designated column in either the current row or the insert
* row of this <code>JoinRowSetImpl object with the given
* <code>long value.
* <P>
* This method updates a column value in the current row or the insert
* row of this rowset, but it does not update the database.
* If the cursor is on a row in the rowset, the
* method {@link #updateRow} must be called to update the database.
* If the cursor is on the insert row, the method {@link #insertRow}
* must be called, which will insert the new row into both this rowset
* and the database. Both of these methods must be called before the
* cursor moves to another row.
*
* @param columnIndex the first column is <code>1, the second
* is <code>2, and so on; must be 1 or larger
* and equal to or less than the number of columns in this rowset
* @param x the new column value
* @throws SQLException if (1) the given column index is out of bounds,
* (2) the cursor is not on one of this rowset's rows or its
* insert row, or (3) this rowset is
* <code>ResultSet.CONCUR_READ_ONLY
*/
public void updateLong(int columnIndex, long x) throws SQLException {
crsInternal.updateLong(columnIndex, x);
}
/**
* Sets the designated column in either the current row or the insert
* row of this <code>JoinRowSetImpl object with the given
* <code>float value.
* <P>
* This method updates a column value in the current row or the insert
* row of this rowset, but it does not update the database.
* If the cursor is on a row in the rowset, the
* method {@link #updateRow} must be called to update the database.
* If the cursor is on the insert row, the method {@link #insertRow}
* must be called, which will insert the new row into both this rowset
* and the database. Both of these methods must be called before the
* cursor moves to another row.
*
* @param columnIndex the first column is <code>1, the second
* is <code>2, and so on; must be 1 or larger
* and equal to or less than the number of columns in this rowset
* @param x the new column value
* @throws SQLException if (1) the given column index is out of bounds,
* (2) the cursor is not on one of this rowset's rows or its
* insert row, or (3) this rowset is
* <code>ResultSet.CONCUR_READ_ONLY
*/
public void updateFloat(int columnIndex, float x) throws SQLException {
crsInternal.updateFloat(columnIndex, x);
}
/**
* Sets the designated column in either the current row or the insert
* row of this <code>JoinRowSetImpl object with the given
* <code>double value.
*
* This method updates a column value in either the current row or
* the insert row of this rowset, but it does not update the
* database. If the cursor is on a row in the rowset, the
* method {@link #updateRow} must be called to update the database.
* If the cursor is on the insert row, the method {@link #insertRow}
* must be called, which will insert the new row into both this rowset
* and the database. Both of these methods must be called before the
* cursor moves to another row.
*
* @param columnIndex the first column is <code>1, the second
* is <code>2, and so on; must be 1 or larger
* and equal to or less than the number of columns in this rowset
* @param x the new column value
* @throws SQLException if (1) the given column index is out of bounds,
* (2) the cursor is not on one of this rowset's rows or its
* insert row, or (3) this rowset is
* <code>ResultSet.CONCUR_READ_ONLY
*/
public void updateDouble(int columnIndex, double x) throws SQLException {
crsInternal.updateDouble(columnIndex, x);
}
/**
* Sets the designated column in either the current row or the insert
* row of this <code>JoinRowSetImpl object with the given
* <code>java.math.BigDecimal object.
* <P>
* This method updates a column value in the current row or the insert
* row of this rowset, but it does not update the database.
* If the cursor is on a row in the rowset, the
* method {@link #updateRow} must be called to update the database.
* If the cursor is on the insert row, the method {@link #insertRow}
* must be called, which will insert the new row into both this rowset
* and the database. Both of these methods must be called before the
* cursor moves to another row.
*
* @param columnIndex the first column is <code>1, the second
* is <code>2, and so on; must be 1 or larger
* and equal to or less than the number of columns in this rowset
* @param x the new column value
* @throws SQLException if (1) the given column index is out of bounds,
* (2) the cursor is not on one of this rowset's rows or its
* insert row, or (3) this rowset is
* <code>ResultSet.CONCUR_READ_ONLY
*/
public void updateBigDecimal(int columnIndex, BigDecimal x) throws SQLException {
crsInternal.updateBigDecimal(columnIndex, x);
}
/**
* Sets the designated column in either the current row or the insert
* row of this <code>JoinRowSetImpl object with the given
* <code>String object.
* <P>
* This method updates a column value in either the current row or
* the insert row of this rowset, but it does not update the
* database. If the cursor is on a row in the rowset, the
* method {@link #updateRow} must be called to mark the row as updated.
* If the cursor is on the insert row, the method {@link #insertRow}
* must be called to insert the new row into this rowset and mark it
* as inserted. Both of these methods must be called before the
* cursor moves to another row.
* <P>
* The method <code>acceptChanges must be called if the
* updated values are to be written back to the underlying database.
*
* @param columnIndex the first column is <code>1, the second
* is <code>2, and so on; must be 1 or larger
* and equal to or less than the number of columns in this rowset
* @param x the new column value
* @throws SQLException if (1) the given column index is out of bounds,
* (2) the cursor is not on one of this rowset's rows or its
* insert row, or (3) this rowset is
* <code>ResultSet.CONCUR_READ_ONLY
*/
public void updateString(int columnIndex, String x) throws SQLException {
crsInternal.updateString(columnIndex, x);
}
/**
* Sets the designated column in either the current row or the insert
* row of this <code>JoinRowSetImpl object with the given
* <code>byte array.
*
* This method updates a column value in either the current row or
* the insert row of this rowset, but it does not update the
* database. If the cursor is on a row in the rowset, the
* method {@link #updateRow} must be called to update the database.
* If the cursor is on the insert row, the method {@link #insertRow}
* must be called, which will insert the new row into both this rowset
* and the database. Both of these methods must be called before the
* cursor moves to another row.
*
* @param columnIndex the first column is <code>1, the second
* is <code>2, and so on; must be 1 or larger
* and equal to or less than the number of columns in this rowset
* @param x the new column value
* @throws SQLException if (1) the given column index is out of bounds,
* (2) the cursor is not on one of this rowset's rows or its
* insert row, or (3) this rowset is
* <code>ResultSet.CONCUR_READ_ONLY
*/
public void updateBytes(int columnIndex, byte x[]) throws SQLException {
crsInternal.updateBytes(columnIndex, x);
}
/**
* Sets the designated column in either the current row or the insert
* row of this <code>JoinRowSetImpl object with the given
* <code>Date object.
*
* This method updates a column value in either the current row or
* the insert row of this rowset, but it does not update the
* database. If the cursor is on a row in the rowset, the
* method {@link #updateRow} must be called to update the database.
* If the cursor is on the insert row, the method {@link #insertRow}
* must be called, which will insert the new row into both this rowset
* and the database. Both of these methods must be called before the
* cursor moves to another row.
*
* @param columnIndex the first column is <code>1, the second
* is <code>2, and so on; must be 1 or larger
* and equal to or less than the number of columns in this rowset
* @param x the new column value
* @throws SQLException if (1) the given column index is out of bounds,
* (2) the cursor is not on one of this rowset's rows or its
* insert row, (3) the type of the designated column is not
* an SQL <code>DATE or TIMESTAMP , or
* (4) this rowset is <code>ResultSet.CONCUR_READ_ONLY
*/
public void updateDate(int columnIndex, java.sql.Date x) throws SQLException {
crsInternal.updateDate(columnIndex, x);
}
/**
* Sets the designated column in either the current row or the insert
* row of this <code>JoinRowSetImpl object with the given
* <code>Time object.
*
* This method updates a column value in either the current row or
* the insert row of this rowset, but it does not update the
* database. If the cursor is on a row in the rowset, the
* method {@link #updateRow} must be called to update the database.
* If the cursor is on the insert row, the method {@link #insertRow}
* must be called, which will insert the new row into both this rowset
* and the database. Both of these methods must be called before the
* cursor moves to another row.
*
* @param columnIndex the first column is <code>1, the second
* is <code>2, and so on; must be 1 or larger
* and equal to or less than the number of columns in this rowset
* @param x the new column value
* @throws SQLException if (1) the given column index is out of bounds,
* (2) the cursor is not on one of this rowset's rows or its
* insert row, (3) the type of the designated column is not
* an SQL <code>TIME or TIMESTAMP , or
* (4) this rowset is <code>ResultSet.CONCUR_READ_ONLY
*/
public void updateTime(int columnIndex, java.sql.Time x) throws SQLException {
crsInternal.updateTime(columnIndex, x);
}
/**
* Sets the designated column in either the current row or the insert
* row of this <code>JoinRowSetImpl object with the given
* <code>Timestamp object.
*
* This method updates a column value in either the current row or
* the insert row of this rowset, but it does not update the
* database. If the cursor is on a row in the rowset, the
* method {@link #updateRow} must be called to update the database.
* If the cursor is on the insert row, the method {@link #insertRow}
* must be called, which will insert the new row into both this rowset
* and the database. Both of these methods must be called before the
* cursor moves to another row.
*
* @param columnIndex the first column is <code>1, the second
* is <code>2, and so on; must be 1 or larger
* and equal to or less than the number of columns in this rowset
* @param x the new column value
* @throws SQLException if (1) the given column index is out of bounds,
* (2) the cursor is not on one of this rowset's rows or its
* insert row, (3) the type of the designated column is not
* an SQL <code>DATE, TIME , or
* <code>TIMESTAMP, or (4) this rowset is
* <code>ResultSet.CONCUR_READ_ONLY
*/
public void updateTimestamp(int columnIndex, java.sql.Timestamp x) throws SQLException {
crsInternal.updateTimestamp(columnIndex, x);
}
/*
* Sets the designated column in either the current row or the insert
* row of this <code>JoinRowSetImpl object with the given
* ASCII stream value.
* <P>
* This method updates a column value in either the current row or
* the insert row of this rowset, but it does not update the
* database. If the cursor is on a row in the rowset, the
* method {@link #updateRow} must be called to update the database.
* If the cursor is on the insert row, the method {@link #insertRow}
* must be called, which will insert the new row into both this rowset
* and the database. Both of these methods must be called before the
* cursor moves to another row.
*
* @param columnIndex the first column is <code>1, the second
* is <code>2, and so on; must be 1 or larger
* and equal to or less than the number of columns in this rowset
* @param x the new column value
* @param length the number of one-byte ASCII characters in the stream
* @throws UnsupportedOperationException if this method is invoked
*/
public void updateAsciiStream(int columnIndex, java.io.InputStream x, int length) throws SQLException {
crsInternal.updateAsciiStream(columnIndex, x, length);
}
/**
* Sets the designated column in either the current row or the insert
* row of this <code>JoinRowSetImpl object with the given
* <code>java.io.InputStream object.
* <P>
* This method updates a column value in either the current row or
* the insert row of this rowset, but it does not update the
* database. If the cursor is on a row in the rowset, the
* method {@link #updateRow} must be called to update the database.
* If the cursor is on the insert row, the method {@link #insertRow}
* must be called, which will insert the new row into both this rowset
* and the database. Both of these methods must be called before the
* cursor moves to another row.
*
* @param columnIndex the first column is <code>1, the second
* is <code>2, and so on; must be 1 or larger
* and equal to or less than the number of columns in this rowset
* @param x the new column value; must be a <code>java.io.InputStream
* containing <code>BINARY, VARBINARY , or
* <code>LONGVARBINARY data
* @param length the length of the stream in bytes
* @throws SQLException if (1) the given column index is out of bounds,
* (2) the cursor is not on one of this rowset's rows or its
* insert row, (3) the data in the stream is not binary, or
* (4) this rowset is <code>ResultSet.CONCUR_READ_ONLY
*/
public void updateBinaryStream(int columnIndex, java.io.InputStream x, int length) throws SQLException {
crsInternal.updateBinaryStream(columnIndex, x, length);
}
/**
* Sets the designated column in either the current row or the insert
* row of this <code>JoinRowSetImpl object with the given
* <code>java.io.Reader object.
* <P>
* This method updates a column value in either the current row or
* the insert row of this rowset, but it does not update the
* database. If the cursor is on a row in the rowset, the
* method {@link #updateRow} must be called to update the database.
* If the cursor is on the insert row, the method {@link #insertRow}
* must be called, which will insert the new row into both this rowset
* and the database. Both of these methods must be called before the
* cursor moves to another row.
*
* @param columnIndex the first column is <code>1, the second
* is <code>2, and so on; must be 1 or larger
* and equal to or less than the number of columns in this rowset
* @param x the new column value; must be a <code>java.io.Reader
* containing <code>BINARY, VARBINARY ,
* <code>LONGVARBINARY, CHAR , VARCHAR ,
* or <code>LONGVARCHAR data
* @param length the length of the stream in characters
* @throws SQLException if (1) the given column index is out of bounds,
* (2) the cursor is not on one of this rowset's rows or its
* insert row, (3) the data in the stream is not a binary or
* character type, or (4) this rowset is
* <code>ResultSet.CONCUR_READ_ONLY
*/
public void updateCharacterStream(int columnIndex, java.io.Reader x, int length) throws SQLException {
crsInternal.updateCharacterStream(columnIndex, x, length);
}
/**
* Sets the designated column in either the current row or the insert
* row of this <code>JoinRowSetImpl object with the given
* <code>Object value. The scale parameter indicates
* the number of digits to the right of the decimal point and is ignored
* if the new column value is not a type that will be mapped to an SQL
* <code>DECIMAL or NUMERIC value.
* <P>
* This method updates a column value in either the current row or
* the insert row of this rowset, but it does not update the
* database. If the cursor is on a row in the rowset, the
* method {@link #updateRow} must be called to update the database.
* If the cursor is on the insert row, the method {@link #insertRow}
* must be called, which will insert the new row into both this rowset
* and the database. Both of these methods must be called before the
* cursor moves to another row.
*
* @param columnIndex the first column is <code>1, the second
* is <code>2, and so on; must be 1 or larger
* and equal to or less than the number of columns in this rowset
* @param x the new column value
* @param scale the number of digits to the right of the decimal point (for
* <code>DECIMAL and NUMERIC types only)
* @throws SQLException if (1) the given column index is out of bounds,
* (2) the cursor is not on one of this rowset's rows or its
* insert row, or (3) this rowset is
* <code>ResultSet.CONCUR_READ_ONLY
*/
public void updateObject(int columnIndex, Object x, int scale) throws SQLException {
crsInternal.updateObject(columnIndex, x, scale);
}
/**
* Sets the designated column in either the current row or the insert
* row of this <code>JoinRowSetImpl object with the given
* <code>Object value.
* <P>
* This method updates a column value in either the current row or
* the insert row of this rowset, but it does not update the
* database. If the cursor is on a row in the rowset, the
* method {@link #updateRow} must be called to update the database.
* If the cursor is on the insert row, the method {@link #insertRow}
* must be called, which will insert the new row into both this rowset
* and the database. Both of these methods must be called before the
* cursor moves to another row.
*
* @param columnIndex the first column is <code>1, the second
* is <code>2, and so on; must be 1 or larger
* and equal to or less than the number of columns in this rowset
* @param x the new column value
* @throws SQLException if (1) the given column index is out of bounds,
* (2) the cursor is not on one of this rowset's rows or its
* insert row, or (3) this rowset is
* <code>ResultSet.CONCUR_READ_ONLY
*/
public void updateObject(int columnIndex, Object x) throws SQLException {
crsInternal.updateObject(columnIndex, x);
}
// columnName updates
/**
* Sets the designated nullable column in the current row or the
* insert row of this <code>JoinRowSetImpl object with
* <code>null value.
* <P>
* This method updates a column value in the current row or the insert
* row of this rowset, but it does not update the database.
* If the cursor is on a row in the rowset, the
* method {@link #updateRow} must be called to update the database.
* If the cursor is on the insert row, the method {@link #insertRow}
* must be called, which will insert the new row into both this rowset
* and the database.
*
* @param columnName a <code>String object that must match the
* SQL name of a column in this rowset, ignoring case
* @throws SQLException if (1) the given column name does not match the
* name of a column in this rowset, (2) the cursor is not on
* one of this rowset's rows or its insert row, or (3) this
* rowset is <code>ResultSet.CONCUR_READ_ONLY
*/
public void updateNull(String columnName) throws SQLException {
crsInternal.updateNull(columnName);
}
/**
* Sets the designated column in either the current row or the insert
* row of this <code>JoinRowSetImpl object with the given
* <code>boolean value.
* <P>
* This method updates a column value in the current row or the insert
* row of this rowset, but it does not update the database.
* If the cursor is on a row in the rowset, the
* method {@link #updateRow} must be called to update the database.
* If the cursor is on the insert row, the method {@link #insertRow}
* must be called, which will insert the new row into both this rowset
* and the database. Both of these methods must be called before the
* cursor moves to another row.
*
* @param columnName a <code>String object that must match the
* SQL name of a column in this rowset, ignoring case
* @param x the new column value
* @throws SQLException if (1) the given column name does not match the
* name of a column in this rowset, (2) the cursor is not on
* one of this rowset's rows or its insert row, or (3) this
* rowset is <code>ResultSet.CONCUR_READ_ONLY
*/
public void updateBoolean(String columnName, boolean x) throws SQLException {
crsInternal.updateBoolean(columnName, x);
}
/**
* Sets the designated column in either the current row or the insert
* row of this <code>JoinRowSetImpl object with the given
* <code>byte value.
* <P>
* This method updates a column value in the current row or the insert
* row of this rowset, but it does not update the database.
* If the cursor is on a row in the rowset, the
* method {@link #updateRow} must be called to update the database.
* If the cursor is on the insert row, the method {@link #insertRow}
* must be called, which will insert the new row into both this rowset
* and the database. Both of these methods must be called before the
* cursor moves to another row.
*
* @param columnName a <code>String object that must match the
* SQL name of a column in this rowset, ignoring case
* @param x the new column value
* @throws SQLException if (1) the given column name does not match the
* name of a column in this rowset, (2) the cursor is not on
* one of this rowset's rows or its insert row, or (3) this
* rowset is <code>ResultSet.CONCUR_READ_ONLY
*/
public void updateByte(String columnName, byte x) throws SQLException {
crsInternal.updateByte(columnName, x);
}
/**
* Sets the designated column in either the current row or the insert
* row of this <code>JoinRowSetImpl object with the given
* <code>short value.
* <P>
* This method updates a column value in the current row or the insert
* row of this rowset, but it does not update the database.
* If the cursor is on a row in the rowset, the
* method {@link #updateRow} must be called to update the database.
* If the cursor is on the insert row, the method {@link #insertRow}
* must be called, which will insert the new row into both this rowset
* and the database. Both of these methods must be called before the
* cursor moves to another row.
*
* @param columnName a <code>String object that must match the
* SQL name of a column in this rowset, ignoring case
* @param x the new column value
* @throws SQLException if (1) the given column name does not match the
* name of a column in this rowset, (2) the cursor is not on
* one of this rowset's rows or its insert row, or (3) this
* rowset is <code>ResultSet.CONCUR_READ_ONLY
*/
public void updateShort(String columnName, short x) throws SQLException {
crsInternal.updateShort(columnName, x);
}
/**
* Sets the designated column in either the current row or the insert
* row of this <code>JoinRowSetImpl object with the given
* <code>int value.
* <P>
* This method updates a column value in the current row or the insert
* row of this rowset, but it does not update the database.
* If the cursor is on a row in the rowset, the
* method {@link #updateRow} must be called to update the database.
* If the cursor is on the insert row, the method {@link #insertRow}
* must be called, which will insert the new row into both this rowset
* and the database. Both of these methods must be called before the
* cursor moves to another row.
*
* @param columnName a <code>String object that must match the
* SQL name of a column in this rowset, ignoring case
* @param x the new column value
* @throws SQLException if (1) the given column name does not match the
* name of a column in this rowset, (2) the cursor is not on
* one of this rowset's rows or its insert row, or (3) this
* rowset is <code>ResultSet.CONCUR_READ_ONLY
*/
public void updateInt(String columnName, int x) throws SQLException {
crsInternal.updateInt(columnName, x);
}
/**
* Sets the designated column in either the current row or the insert
* row of this <code>JoinRowSetImpl object with the given
* <code>long value.
* <P>
* This method updates a column value in the current row or the insert
* row of this rowset, but it does not update the database.
* If the cursor is on a row in the rowset, the
* method {@link #updateRow} must be called to update the database.
* If the cursor is on the insert row, the method {@link #insertRow}
* must be called, which will insert the new row into both this rowset
* and the database. Both of these methods must be called before the
* cursor moves to another row.
*
* @param columnName a <code>String object that must match the
* SQL name of a column in this rowset, ignoring case
* @param x the new column value
* @throws SQLException if (1) the given column name does not match the
* name of a column in this rowset, (2) the cursor is not on
* one of this rowset's rows or its insert row, or (3) this
* rowset is <code>ResultSet.CONCUR_READ_ONLY
*/
public void updateLong(String columnName, long x) throws SQLException {
crsInternal.updateLong(columnName, x);
}
/**
* Sets the designated column in either the current row or the insert
* row of this <code>JoinRowSetImpl object with the given
* <code>float value.
* <P>
* This method updates a column value in the current row or the insert
* row of this rowset, but it does not update the database.
* If the cursor is on a row in the rowset, the
* method {@link #updateRow} must be called to update the database.
* If the cursor is on the insert row, the method {@link #insertRow}
* must be called, which will insert the new row into both this rowset
* and the database. Both of these methods must be called before the
* cursor moves to another row.
*
* @param columnName a <code>String object that must match the
* SQL name of a column in this rowset, ignoring case
* @param x the new column value
* @throws SQLException if (1) the given column name does not match the
* name of a column in this rowset, (2) the cursor is not on
* one of this rowset's rows or its insert row, or (3) this
* rowset is <code>ResultSet.CONCUR_READ_ONLY
*/
public void updateFloat(String columnName, float x) throws SQLException {
crsInternal.updateFloat(columnName, x);
}
/**
* Sets the designated column in either the current row or the insert
* row of this <code>JoinRowSetImpl object with the given
* <code>double value.
*
* This method updates a column value in either the current row or
* the insert row of this rowset, but it does not update the
* database. If the cursor is on a row in the rowset, the
* method {@link #updateRow} must be called to update the database.
* If the cursor is on the insert row, the method {@link #insertRow}
* must be called, which will insert the new row into both this rowset
* and the database. Both of these methods must be called before the
* cursor moves to another row.
*
* @param columnName a <code>String object that must match the
* SQL name of a column in this rowset, ignoring case
* @param x the new column value
* @throws SQLException if (1) the given column name does not match the
* name of a column in this rowset, (2) the cursor is not on
* one of this rowset's rows or its insert row, or (3) this
* rowset is <code>ResultSet.CONCUR_READ_ONLY
*/
public void updateDouble(String columnName, double x) throws SQLException {
crsInternal.updateDouble(columnName, x);
}
/**
* Sets the designated column in either the current row or the insert
* row of this <code>JoinRowSetImpl object with the given
* <code>java.math.BigDecimal object.
* <P>
* This method updates a column value in the current row or the insert
* row of this rowset, but it does not update the database.
* If the cursor is on a row in the rowset, the
* method {@link #updateRow} must be called to update the database.
* If the cursor is on the insert row, the method {@link #insertRow}
* must be called, which will insert the new row into both this rowset
* and the database. Both of these methods must be called before the
* cursor moves to another row.
*
* @param columnName a <code>String object that must match the
* SQL name of a column in this rowset, ignoring case
* @param x the new column value
* @throws SQLException if (1) the given column name does not match the
* name of a column in this rowset, (2) the cursor is not on
* one of this rowset's rows or its insert row, or (3) this
* rowset is <code>ResultSet.CONCUR_READ_ONLY
*/
public void updateBigDecimal(String columnName, BigDecimal x) throws SQLException {
crsInternal.updateBigDecimal(columnName, x);
}
/**
* Sets the designated column in either the current row or the insert
* row of this <code>JoinRowSetImpl object with the given
* <code>String object.
*
* This method updates a column value in either the current row or
* the insert row of this rowset, but it does not update the
* database. If the cursor is on a row in the rowset, the
* method {@link #updateRow} must be called to update the database.
* If the cursor is on the insert row, the method {@link #insertRow}
* must be called, which will insert the new row into both this rowset
* and the database. Both of these methods must be called before the
* cursor moves to another row.
*
* @param columnName a <code>String object that must match the
* SQL name of a column in this rowset, ignoring case
* @param x the new column value
* @throws SQLException if (1) the given column name does not match the
* name of a column in this rowset, (2) the cursor is not on
* one of this rowset's rows or its insert row, or (3) this
* rowset is <code>ResultSet.CONCUR_READ_ONLY
*/
public void updateString(String columnName, String x) throws SQLException {
crsInternal.updateString(columnName, x);
}
/**
* Sets the designated column in either the current row or the insert
* row of this <code>JoinRowSetImpl object with the given
* <code>byte array.
*
* This method updates a column value in either the current row or
* the insert row of this rowset, but it does not update the
* database. If the cursor is on a row in the rowset, the
* method {@link #updateRow} must be called to update the database.
* If the cursor is on the insert row, the method {@link #insertRow}
* must be called, which will insert the new row into both this rowset
* and the database. Both of these methods must be called before the
* cursor moves to another row.
*
* @param columnName a <code>String object that must match the
* SQL name of a column in this rowset, ignoring case
* @param x the new column value
* @throws SQLException if (1) the given column name does not match the
* name of a column in this rowset, (2) the cursor is not on
* one of this rowset's rows or its insert row, or (3) this
* rowset is <code>ResultSet.CONCUR_READ_ONLY
*/
public void updateBytes(String columnName, byte x[]) throws SQLException {
crsInternal.updateBytes(columnName, x);
}
/**
* Sets the designated column in either the current row or the insert
* row of this <code>JoinRowSetImpl object with the given
* <code>Date object.
*
* This method updates a column value in either the current row or
* the insert row of this rowset, but it does not update the
* database. If the cursor is on a row in the rowset, the
* method {@link #updateRow} must be called to update the database.
* If the cursor is on the insert row, the method {@link #insertRow}
* must be called, which will insert the new row into both this rowset
* and the database. Both of these methods must be called before the
* cursor moves to another row.
*
* @param columnName a <code>String object that must match the
* SQL name of a column in this rowset, ignoring case
* @param x the new column value
* @throws SQLException if (1) the given column name does not match the
* name of a column in this rowset, (2) the cursor is not on
* one of this rowset's rows or its insert row, (3) the type
* of the designated column is not an SQL <code>DATE or
* <code>TIMESTAMP, or (4) this rowset is
* <code>ResultSet.CONCUR_READ_ONLY
*/
public void updateDate(String columnName, java.sql.Date x) throws SQLException {
crsInternal.updateDate(columnName, x);
}
/**
* Sets the designated column in either the current row or the insert
* row of this <code>JoinRowSetImpl object with the given
* <code>Time object.
*
* This method updates a column value in either the current row or
* the insert row of this rowset, but it does not update the
* database. If the cursor is on a row in the rowset, the
* method {@link #updateRow} must be called to update the database.
* If the cursor is on the insert row, the method {@link #insertRow}
* must be called, which will insert the new row into both this rowset
* and the database. Both of these methods must be called before the
* cursor moves to another row.
*
* @param columnName a <code>String object that must match the
* SQL name of a column in this rowset, ignoring case
* @param x the new column value
* @throws SQLException if (1) the given column name does not match the
* name of a column in this rowset, (2) the cursor is not on
* one of this rowset's rows or its insert row, (3) the type
* of the designated column is not an SQL <code>TIME or
* <code>TIMESTAMP, or (4) this rowset is
* <code>ResultSet.CONCUR_READ_ONLY
*/
public void updateTime(String columnName, java.sql.Time x) throws SQLException {
crsInternal.updateTime(columnName, x);
}
/**
* Sets the designated column in either the current row or the insert
* row of this <code>JoinRowSetImpl object with the given
* <code>Timestamp object.
*
* This method updates a column value in either the current row or
* the insert row of this rowset, but it does not update the
* database. If the cursor is on a row in the rowset, the
* method {@link #updateRow} must be called to update the database.
* If the cursor is on the insert row, the method {@link #insertRow}
* must be called, which will insert the new row into both this rowset
* and the database. Both of these methods must be called before the
* cursor moves to another row.
*
* @param columnName a <code>String object that must match the
* SQL name of a column in this rowset, ignoring case
* @param x the new column value
* @throws SQLException if the given column index is out of bounds or
* the cursor is not on one of this rowset's rows or its
* insert row
* @throws SQLException if (1) the given column name does not match the
* name of a column in this rowset, (2) the cursor is not on
* one of this rowset's rows or its insert row, (3) the type
* of the designated column is not an SQL <code>DATE,
* <code>TIME, or TIMESTAMP , or (4) this
* rowset is <code>ResultSet.CONCUR_READ_ONLY
*/
public void updateTimestamp(String columnName, java.sql.Timestamp x) throws SQLException {
crsInternal.updateTimestamp(columnName, x);
}
/**
* Unsupported; throws an <code>UnsupportedOperationException
* if called.
* <P>
* Sets the designated column in either the current row or the insert
* row of this <code>JoinRowSetImpl object with the given
* ASCII stream value.
* <P>
* This method updates a column value in either the current row or
* the insert row of this rowset, but it does not update the
* database. If the cursor is on a row in the rowset, the
* method {@link #updateRow} must be called to update the database.
* If the cursor is on the insert row, the method {@link #insertRow}
* must be called, which will insert the new row into both this rowset
* and the database. Both of these methods must be called before the
* cursor moves to another row.
*
* @param columnName a <code>String object that must match the
* SQL name of a column in this rowset, ignoring case
* @param x the new column value
* @param length the number of one-byte ASCII characters in the stream
* @throws UnsupportedOperationException if this method is invoked
*/
public void updateAsciiStream(String columnName, java.io.InputStream x, int length) throws SQLException {
crsInternal.updateAsciiStream(columnName, x, length);
}
/**
* Sets the designated column in either the current row or the insert
* row of this <code>JoinRowSetImpl object with the given
* <code>java.io.InputStream object.
* <P>
* This method updates a column value in either the current row or
* the insert row of this rowset, but it does not update the
* database. If the cursor is on a row in the rowset, the
* method {@link #updateRow} must be called to update the database.
* If the cursor is on the insert row, the method {@link #insertRow}
* must be called, which will insert the new row into both this rowset
* and the database. Both of these methods must be called before the
* cursor moves to another row.
*
* @param columnName a <code>String object that must match the
* SQL name of a column in this rowset, ignoring case
* @param x the new column value; must be a <code>java.io.InputStream
* containing <code>BINARY, VARBINARY , or
* <code>LONGVARBINARY data
* @param length the length of the stream in bytes
* @throws SQLException if (1) the given column name does not match the
* name of a column in this rowset, (2) the cursor is not on
* one of this rowset's rows or its insert row, (3) the data
* in the stream is not binary, or (4) this rowset is
* <code>ResultSet.CONCUR_READ_ONLY
*/
public void updateBinaryStream(String columnName, java.io.InputStream x, int length) throws SQLException {
crsInternal.updateBinaryStream(columnName, x, length);
}
/**
* Sets the designated column in either the current row or the insert
* row of this <code>JoinRowSetImpl object with the given
* <code>java.io.Reader object.
* <P>
* This method updates a column value in either the current row or
* the insert row of this rowset, but it does not update the
* database. If the cursor is on a row in the rowset, the
* method {@link #updateRow} must be called to update the database.
* If the cursor is on the insert row, the method {@link #insertRow}
* must be called, which will insert the new row into both this rowset
* and the database. Both of these methods must be called before the
* cursor moves to another row.
*
* @param columnName a <code>String object that must match the
* SQL name of a column in this rowset, ignoring case
* @param x the new column value; must be a <code>java.io.Reader
* containing <code>BINARY, VARBINARY ,
* <code>LONGVARBINARY, CHAR , VARCHAR ,
* or <code>LONGVARCHAR data
* @param length the length of the stream in characters
* @throws SQLException if (1) the given column name does not match the
* name of a column in this rowset, (2) the cursor is not on
* one of this rowset's rows or its insert row, (3) the data
* in the stream is not a binary or character type, or (4) this
* rowset is <code>ResultSet.CONCUR_READ_ONLY
*/
public void updateCharacterStream(String columnName, java.io.Reader x, int length) throws SQLException {
crsInternal.updateCharacterStream(columnName, x, length);
}
/**
* Sets the designated column in either the current row or the insert
* row of this <code>JoinRowSetImpl object with the given
* <code>Object value. The scale parameter
* indicates the number of digits to the right of the decimal point
* and is ignored if the new column value is not a type that will be
* mapped to an SQL <code>DECIMAL or NUMERIC value.
* <P>
* This method updates a column value in either the current row or
* the insert row of this rowset, but it does not update the
* database. If the cursor is on a row in the rowset, the
* method {@link #updateRow} must be called to update the database.
* If the cursor is on the insert row, the method {@link #insertRow}
* must be called, which will insert the new row into both this rowset
* and the database. Both of these methods must be called before the
* cursor moves to another row.
*
* @param columnName a <code>String object that must match the
* SQL name of a column in this rowset, ignoring case
* @param x the new column value
* @param scale the number of digits to the right of the decimal point (for
* <code>DECIMAL and NUMERIC types only)
* @throws SQLException if the given column index is out of bounds or
* the cursor is not on one of this rowset's rows or its
* insert row
* @throws SQLException if (1) the given column name does not match the
* name of a column in this rowset, (2) the cursor is not on
* one of this rowset's rows or its insert row, or (3) this
* rowset is <code>ResultSet.CONCUR_READ_ONLY
*/
public void updateObject(String columnName, Object x, int scale) throws SQLException {
crsInternal.updateObject(columnName, x, scale);
}
/**
* Sets the designated column in either the current row or the insert
* row of this <code>JoinRowSetImpl object with the given
* <code>Object value.
* <P>
* This method updates a column value in either the current row or
* the insert row of this rowset, but it does not update the
* database. If the cursor is on a row in the rowset, the
* method {@link #updateRow} must be called to update the database.
* If the cursor is on the insert row, the method {@link #insertRow}
* must be called, which will insert the new row into both this rowset
* and the database. Both of these methods must be called before the
* cursor moves to another row.
*
* @param columnName a <code>String object that must match the
* SQL name of a column in this rowset, ignoring case
* @param x the new column value
* @throws SQLException if (1) the given column name does not match the
* name of a column in this rowset, (2) the cursor is not on
* one of this rowset's rows or its insert row, or (3) this
* rowset is <code>ResultSet.CONCUR_READ_ONLY
*/
public void updateObject(String columnName, Object x) throws SQLException {
crsInternal.updateObject(columnName, x);
}
/**
* Inserts the contents of this <code>JoinRowSetImpl object's insert
* row into this rowset immediately following the current row.
* If the current row is the
* position after the last row or before the first row, the new row will
* be inserted at the end of the rowset. This method also notifies
* listeners registered with this rowset that the row has changed.
* <P>
* The cursor must be on the insert row when this method is called.
*
* @throws SQLException if (1) the cursor is not on the insert row,
* (2) one or more of the non-nullable columns in the insert
* row has not been given a value, or (3) this rowset is
* <code>ResultSet.CONCUR_READ_ONLY
*/
public void insertRow() throws SQLException {
crsInternal.insertRow();
}
/**
* Marks the current row of this <code>JoinRowSetImpl object as
* updated and notifies listeners registered with this rowset that the
* row has changed.
* <P>
* This method cannot be called when the cursor is on the insert row, and
* it should be called before the cursor moves to another row. If it is
* called after the cursor moves to another row, this method has no effect,
* and the updates made before the cursor moved will be lost.
*
* @throws SQLException if the cursor is on the insert row or this
* rowset is <code>ResultSet.CONCUR_READ_ONLY
*/
public void updateRow() throws SQLException {
crsInternal.updateRow();
}
/**
* Deletes the current row from this <code>JoinRowSetImpl object and
* notifies listeners registered with this rowset that a row has changed.
* This method cannot be called when the cursor is on the insert row.
* <P>
* This method marks the current row as deleted, but it does not delete
* the row from the underlying data source. The method
* <code>acceptChanges must be called to delete the row in
* the data source.
*
* @throws SQLException if (1) this method is called when the cursor
* is on the insert row, before the first row, or after the
* last row or (2) this rowset is
* <code>ResultSet.CONCUR_READ_ONLY
*/
public void deleteRow() throws SQLException {
crsInternal.deleteRow();
}
/**
* Sets the current row with its original value and marks the row as
* not updated, thus undoing any changes made to the row since the
* last call to the methods <code>updateRow or deleteRow .
* This method should be called only when the cursor is on a row in
* this rowset.
*
* @throws SQLException if the cursor is on the insert row, before the
* first row, or after the last row
*/
public void refreshRow() throws SQLException {
crsInternal.refreshRow();
}
/**
* Rolls back any updates made to the current row of this
* <code>JoinRowSetImpl object and notifies listeners that
* a row has changed. To have an effect, this method
* must be called after an <code>updateXXX method has been
* called and before the method <code>updateRow has been called.
* If no updates have been made or the method <code>updateRow
* has already been called, this method has no effect.
* <P>
* After <code>updateRow is called it is the
* <code>cancelRowUpdates has no affect on the newly
* inserted values. The method <code>cancelRowInsert can
* be used to remove any rows inserted into the RowSet.
*
* @throws SQLException if the cursor is on the insert row, before the
* first row, or after the last row
*/
public void cancelRowUpdates() throws SQLException {
crsInternal.cancelRowUpdates();
}
/**
* Moves the cursor for this <code>JoinRowSetImpl object
* to the insert row. The current row in the rowset is remembered
* while the cursor is on the insert row.
* <P>
* The insert row is a special row associated with an updatable
* rowset. It is essentially a buffer where a new row may
* be constructed by calling the appropriate <code>updateXXX
* methods to assign a value to each column in the row. A complete
* row must be constructed; that is, every column that is not nullable
* must be assigned a value. In order for the new row to become part
* of this rowset, the method <code>insertRow must be called
* before the cursor is moved back to the rowset.
* <P>
* Only certain methods may be invoked while the cursor is on the insert
* row; many methods throw an exception if they are called while the
* cursor is there. In addition to the <code>updateXXX
* and <code>insertRow methods, only the getXXX methods
* may be called when the cursor is on the insert row. A <code>getXXX
* method should be called on a column only after an <code>updateXXX
* method has been called on that column; otherwise, the value returned is
* undetermined.
*
* @throws SQLException if this <code>JoinRowSetImpl object is
* <code>ResultSet.CONCUR_READ_ONLY
*/
public void moveToInsertRow() throws SQLException {
crsInternal.moveToInsertRow();
}
/**
* Moves the cursor for this <code>JoinRowSetImpl object to
* the current row. The current row is the row the cursor was on
* when the method <code>moveToInsertRow was called.
* <P>
* Calling this method has no effect unless it is called while the
* cursor is on the insert row.
*
* @throws SQLException if an error occurs
*/
public void moveToCurrentRow() throws SQLException {
crsInternal.moveToCurrentRow();
}
/**
* Returns <code>null.
*
* @return <code>null
* @throws SQLException if an error occurs
*/
public Statement getStatement() throws SQLException {
return crsInternal.getStatement();
}
/**
* Retrieves the value of the designated column in this
* <code>JoinRowSetImpl object as a Ref object
* in the Java programming lanugage.
*
* @param columnIndex the first column is <code>1, the second
* is <code>2, and so on; must be 1 or larger
* and equal to or less than the number of columns in this rowset
* @return a <code>Ref object representing an SQL REF value
* @throws SQLException if (1) the given column index is out of bounds,
* (2) the cursor is not on one of this rowset's rows or its
* insert row, or (3) the designated column does not store an
* SQL <code>REF value
*/
public Ref getRef(int columnIndex) throws SQLException {
return crsInternal.getRef(columnIndex);
}
/**
* Retrieves the value of the designated column in this
* <code>JoinRowSetImpl object as a Blob object
* in the Java programming lanugage.
*
* @param columnIndex the first column is <code>1, the second
* is <code>2, and so on; must be 1 or larger
* and equal to or less than the number of columns in this rowset
* @return a <code>Blob object representing an SQL BLOB value
* @throws SQLException if (1) the given column index is out of bounds,
* (2) the cursor is not on one of this rowset's rows or its
* insert row, or (3) the designated column does not store an
* SQL <code>BLOB value
*/
public Blob getBlob(int columnIndex) throws SQLException {
return crsInternal.getBlob(columnIndex);
}
/**
* Retrieves the value of the designated column in this
* <code>JoinRowSetImpl object as a Clob object
* in the Java programming lanugage.
*
* @param columnIndex the first column is <code>1, the second
* is <code>2, and so on; must be 1 or larger
* and equal to or less than the number of columns in this rowset
* @return a <code>Clob object representing an SQL CLOB value
* @throws SQLException if (1) the given column index is out of bounds,
* (2) the cursor is not on one of this rowset's rows or its
* insert row, or (3) the designated column does not store an
* SQL <code>CLOB value
*/
public Clob getClob(int columnIndex) throws SQLException {
return crsInternal.getClob(columnIndex);
}
/**
* Retrieves the value of the designated column in this
* <code>JoinRowSetImpl object as an Array object
* in the Java programming lanugage.
*
* @param columnIndex the first column is <code>1, the second
* is <code>2, and so on; must be 1 or larger
* and equal to or less than the number of columns in this rowset
* @return an <code>Array object representing an SQL
* <code>ARRAY value
* @throws SQLException if (1) the given column index is out of bounds,
* (2) the cursor is not on one of this rowset's rows or its
* insert row, or (3) the designated column does not store an
* SQL <code>ARRAY value
*/
public Array getArray(int columnIndex) throws SQLException {
return crsInternal.getArray(columnIndex);
}
// ColumnName
/**
* Retrieves the value of the designated column in this
* <code>JoinRowSetImpl object as a Ref object
* in the Java programming lanugage.
*
* @param columnName a <code>String object that must match the
* SQL name of a column in this rowset, ignoring case
* @return a <code>Ref object representing an SQL REF value
* @throws SQLException if (1) the given column name is not the name
* of a column in this rowset, (2) the cursor is not on one of
* this rowset's rows or its insert row, or (3) the column value
* is not an SQL <code>REF value
*/
public Ref getRef(String columnName) throws SQLException {
return crsInternal.getRef(columnName);
}
/**
* Retrieves the value of the designated column in this
* <code>JoinRowSetImpl object as a Blob object
* in the Java programming lanugage.
*
* @param columnName a <code>String object that must match the
* SQL name of a column in this rowset, ignoring case
* @return a <code>Blob object representing an SQL
* <code>BLOB value
* @throws SQLException if (1) the given column name is not the name of
* a column in this rowset, (2) the cursor is not on one of
* this rowset's rows or its insert row, or (3) the designated
* column does not store an SQL <code>BLOB value
*/
public Blob getBlob(String columnName) throws SQLException {
return crsInternal.getBlob(columnName);
}
/**
* Retrieves the value of the designated column in this
* <code>JoinRowSetImpl object as a Clob object
* in the Java programming lanugage.
*
* @param columnName a <code>String object that must match the
* SQL name of a column in this rowset, ignoring case
* @return a <code>Clob object representing an SQL
* <code>CLOB value
* @throws SQLException if (1) the given column name is not the name of
* a column in this rowset, (2) the cursor is not on one of
* this rowset's rows or its insert row, or (3) the designated
* column does not store an SQL <code>CLOB value
*/
public Clob getClob(String columnName) throws SQLException {
return crsInternal.getClob(columnName);
}
/**
* Retrieves the value of the designated column in this
* <code>JoinRowSetImpl object as an Array object
* in the Java programming lanugage.
*
* @param columnName a <code>String object that must match the
* SQL name of a column in this rowset, ignoring case
* @return an <code>Array object representing an SQL
* <code>ARRAY value
* @throws SQLException if (1) the given column name is not the name of
* a column in this rowset, (2) the cursor is not on one of
* this rowset's rows or its insert row, or (3) the designated
* column does not store an SQL <code>ARRAY value
*/
public Array getArray(String columnName) throws SQLException {
return crsInternal.getArray(columnName);
}
/**
* Retrieves the value of the designated column in the current row
* of this <code>JoinRowSetImpl object as a java.sql.Date
* object, using the given <code>Calendar object to construct an
* appropriate millisecond value for the date.
*
* @param columnIndex the first column is <code>1, the second
* is <code>2, and so on; must be 1 or larger
* and equal to or less than the number of columns in the rowset
* @param cal the <code>java.util.Calendar object to use in
* constructing the date
* @return the column value; if the value is SQL <code>NULL,
* the result is <code>null
* @throws SQLException if (1) the given column name is not the name of
* a column in this rowset, (2) the cursor is not on one of
* this rowset's rows or its insert row, or (3) the designated
* column does not store an SQL <code>DATE or
* <code>TIMESTAMP value
*/
public java.sql.Date getDate(int columnIndex, Calendar cal) throws SQLException {
return crsInternal.getDate(columnIndex, cal);
}
/**
* Retrieves the value of the designated column in the current row
* of this <code>JoinRowSetImpl object as a java.sql.Date
* object, using the given <code>Calendar object to construct an
* appropriate millisecond value for the date.
*
* @param columnName a <code>String object that must match the
* SQL name of a column in this rowset, ignoring case
* @param cal the <code>java.util.Calendar object to use in
* constructing the date
* @return the column value; if the value is SQL <code>NULL,
* the result is <code>null
* @throws SQLException if (1) the given column name is not the name of
* a column in this rowset, (2) the cursor is not on one of
* this rowset's rows or its insert row, or (3) the designated
* column does not store an SQL <code>DATE or
* <code>TIMESTAMP value
*/
public java.sql.Date getDate(String columnName, Calendar cal) throws SQLException {
return crsInternal.getDate(columnName, cal);
}
/**
* Retrieves the value of the designated column in the current row
* of this <code>JoinRowSetImpl object as a java.sql.Time
* object, using the given <code>Calendar object to construct an
* appropriate millisecond value for the date.
*
* @param columnIndex the first column is <code>1, the second
* is <code>2, and so on; must be 1 or larger
* and equal to or less than the number of columns in the rowset
* @param cal the <code>java.util.Calendar object to use in
* constructing the date
* @return the column value; if the value is SQL <code>NULL,
* the result is <code>null
* @throws SQLException if (1) the given column name is not the name of
* a column in this rowset, (2) the cursor is not on one of
* this rowset's rows or its insert row, or (3) the designated
* column does not store an SQL <code>TIME or
* <code>TIMESTAMP value
*/
public java.sql.Time getTime(int columnIndex, Calendar cal) throws SQLException {
return crsInternal.getTime(columnIndex, cal);
}
/**
* Retrieves the value of the designated column in the current row
* of this <code>JoinRowSetImpl object as a java.sql.Time
* object, using the given <code>Calendar object to construct an
* appropriate millisecond value for the date.
*
* @param columnName a <code>String object that must match the
* SQL name of a column in this rowset, ignoring case
* @param cal the <code>java.util.Calendar object to use in
* constructing the date
* @return the column value; if the value is SQL <code>NULL,
* the result is <code>null
* @throws SQLException if (1) the given column name is not the name of
* a column in this rowset, (2) the cursor is not on one of
* this rowset's rows or its insert row, or (3) the designated
* column does not store an SQL <code>TIME or
* <code>TIMESTAMP value
*/
public java.sql.Time getTime(String columnName, Calendar cal) throws SQLException {
return crsInternal.getTime(columnName, cal);
}
/**
* Retrieves the value of the designated column in the current row
* of this <code>JoinRowSetImpl object as a java.sql.Timestamp
* object, using the given <code>Calendar object to construct an
* appropriate millisecond value for the date.
*
* @param columnIndex the first column is <code>1, the second
* is <code>2, and so on; must be 1 or larger
* and equal to or less than the number of columns in the rowset
* @param cal the <code>java.util.Calendar object to use in
* constructing the date
* @return the column value; if the value is SQL <code>NULL,
* the result is <code>null
* @throws SQLException if (1) the given column name is not the name of
* a column in this rowset, (2) the cursor is not on one of
* this rowset's rows or its insert row, or (3) the designated
* column does not store an SQL <code>TIME or
* <code>TIMESTAMP value
*/
public java.sql.Timestamp getTimestamp(int columnIndex, Calendar cal) throws SQLException {
return crsInternal.getTimestamp(columnIndex, cal);
}
/**
* Retrieves the value of the designated column in the current row
* of this <code>JoinRowSetImpl object as a
* <code>java.sql.Timestamp object, using the given
* <code>Calendar object to construct an appropriate
* millisecond value for the date.
*
* @param columnName a <code>String object that must match the
* SQL name of a column in this rowset, ignoring case
* @param cal the <code>java.util.Calendar object to use in
* constructing the date
* @return the column value; if the value is SQL <code>NULL,
* the result is <code>null
* @throws SQLException if (1) the given column name is not the name of
* a column in this rowset, (2) the cursor is not on one of
* this rowset's rows or its insert row, or (3) the designated
* column does not store an SQL <code>DATE,
* <code>TIME, or TIMESTAMP value
*/
public java.sql.Timestamp getTimestamp(String columnName, Calendar cal) throws SQLException {
return crsInternal.getTimestamp(columnName, cal);
}
/**
* Sets the metadata for this <code>JoinRowSetImpl object
* with the given <code>RowSetMetaData object.
*
* @param md a <code>RowSetMetaData object instance containing
* metadata about the columsn in the rowset
* @throws SQLException if invalid meta data is supplied to the
* rowset
*/
public void setMetaData(RowSetMetaData md) throws SQLException {
crsInternal.setMetaData(md);
}
public ResultSet getOriginal() throws SQLException {
return crsInternal.getOriginal();
}
/**
* Returns a result set containing the original value of the rowset.
* The cursor is positioned before the first row in the result set.
* Only rows contained in the result set returned by getOriginal()
* are said to have an original value.
*
* @return the original result set of the rowset
* @throws SQLException if an error occurs produce the
* <code>ResultSet object
*/
public ResultSet getOriginalRow() throws SQLException {
return crsInternal.getOriginalRow();
}
/**
* Returns a result set containing the original value of the current
* row only.
*
* @throws SQLException if there is no current row
* @see #setOriginalRow
*/
public void setOriginalRow() throws SQLException {
crsInternal.setOriginalRow();
}
/**
* Returns the columns that make a key to uniquely identify a
* row in this <code>JoinRowSetImpl object.
*
* @return an array of column number that constites a primary
* key for this rowset. This array should be empty
* if no columns is representitive of a primary key
* @throws SQLException if the rowset is empty or no columns
* are designated as primary keys
* @see #setKeyColumns
*/
public int[] getKeyColumns() throws SQLException {
return crsInternal.getKeyColumns();
}
/**
* Sets this <code>JoinRowSetImpl object's
* <code>keyCols field with the given array of column
* numbers, which forms a key for uniquely identifying a row
* in this rowset.
*
* @param cols an array of <code>int indicating the
* columns that form a primary key for this
* <code>JoinRowSetImpl object; every
* element in the array must be greater than
* <code>0 and less than or equal to the number
* of columns in this rowset
* @throws SQLException if any of the numbers in the
* given array is not valid for this rowset
* @see #getKeyColumns
*/
public void setKeyColumns(int[] cols) throws SQLException {
crsInternal.setKeyColumns(cols);
}
/**
* Sets the designated column in either the current row or the insert
* row of this <code>JoinRowSetImpl object with the given
* <code>Ref value.
* <P>
* This method updates a column value in the current row or the insert
* row of this rowset, but it does not update the database.
* If the cursor is on a row in the rowset, the
* method {@link #updateRow} must be called to update the database.
* If the cursor is on the insert row, the method {@link #insertRow}
* must be called, which will insert the new row into both this rowset
* and the database. Either of these methods must be called before the
* cursor moves to another row.
*
* @param columnIndex the first column is <code>1, the second
* is <code>2, and so on; must be 1 or larger
* and equal to or less than the number of columns in this rowset
* @param ref the <code>java.sql.Ref object that will be set as
* the new column value
* @throws SQLException if (1) the given column index is out of bounds,
* (2) the cursor is not on one of this rowset's rows or its
* insert row, or (3) this rowset is
* <code>ResultSet.CONCUR_READ_ONLY
*/
public void updateRef(int columnIndex, java.sql.Ref ref) throws SQLException {
crsInternal.updateRef(columnIndex, ref);
}
/**
* Sets the designated column in either the current row or the insert
* row of this <code>JoinRowSetImpl object with the given
* <code>Ref value.
* <P>
* This method updates a column value in the current row or the insert
* row of this rowset, but it does not update the database.
* If the cursor is on a row in the rowset, the
* method {@link #updateRow} must be called to update the database.
* If the cursor is on the insert row, the method {@link #insertRow}
* must be called, which will insert the new row into both this rowset
* and the database. Either of these methods must be called before the
* cursor moves to another row.
*
* @param columnName a <code>String object giving the name of the column
* to be updated; must match one of the column names in this
* <code>JoinRowSetImpl object
* @param ref the <code>java.sql.Ref object that will be set as
* the new column value
* @throws SQLException if (1) the given column name is not valid,
* (2) the cursor is not on one of this rowset's rows or its
* insert row, or (3) this rowset is
* <code>ResultSet.CONCUR_READ_ONLY
*/
public void updateRef(String columnName, java.sql.Ref ref) throws SQLException {
crsInternal.updateRef(columnName, ref);
}
/**
* Sets the designated column in either the current row or the insert
* row of this <code>JoinRowSetImpl object with the given
* <code>Clob object.
* <P>
* This method updates a column value in the current row or the insert
* row of this rowset, but it does not update the database.
* If the cursor is on a row in the rowset, the
* method {@link #updateRow} must be called to update the database.
* If the cursor is on the insert row, the method {@link #insertRow}
* must be called, which will insert the new row into both this rowset
* and the database. Either of these methods must be called before the
* cursor moves to another row.
*
* @param columnIndex the first column is <code>1, the second
* is <code>2, and so on; must be 1 or larger
* and equal to or less than the number of columns in this rowset
* @param c the <code>java.sql.Clob object that will be set as
* the new column value
* @throws SQLException if (1) the given column index is out of bounds,
* (2) the cursor is not on one of this rowset's rows or its
* insert row, or (3) this rowset is
* <code>ResultSet.CONCUR_READ_ONLY
*/
public void updateClob(int columnIndex, Clob c) throws SQLException {
crsInternal.updateClob(columnIndex, c);
}
/**
* Sets the designated column in either the current row or the insert
* row of this <code>JoinRowSetImpl object with the given
* <code>Clob object.
* <P>
* This method updates a column value in the current row or the insert
* row of this rowset, but it does not update the database.
* If the cursor is on a row in the rowset, the
* method {@link #updateRow} must be called to update the database.
* If the cursor is on the insert row, the method {@link #insertRow}
* must be called, which will insert the new row into both this rowset
* and the database. Either of these methods must be called before the
* cursor moves to another row.
*
* @param columnName a <code>String object giving the name of the column
* to be updated; must match one of the column names in this
* <code>JoinRowSetImpl object
* @param c the <code>java.sql.Clob object that will be set as
* the new column value
* @throws SQLException if (1) the given column name is not valid,
* (2) the cursor is not on one of this rowset's rows or its
* insert row, or (3) this rowset is
* <code>ResultSet.CONCUR_READ_ONLY
*/
public void updateClob(String columnName, Clob c) throws SQLException {
crsInternal.updateClob(columnName, c);
}
/**
* Sets the designated column in either the current row or the insert
* row of this <code>JoinRowSetImpl object with the given
* <code>Blob value.
* <P>
* This method updates a column value in the current row or the insert
* row of this rowset, but it does not update the database.
* If the cursor is on a row in the rowset, the
* method {@link #updateRow} must be called to update the database.
* If the cursor is on the insert row, the method {@link #insertRow}
* must be called, which will insert the new row into both this rowset
* and the database. Either of these methods must be called before the
* cursor moves to another row.
*
* @param columnIndex the first column is <code>1, the second
* is <code>2, and so on; must be 1 or larger
* and equal to or less than the number of columns in this rowset
* @param b the <code>java.sql.Blob object that will be set as
* the new column value
* @throws SQLException if (1) the given column index is out of bounds,
* (2) the cursor is not on one of this rowset's rows or its
* insert row, or (3) this rowset is
* <code>ResultSet.CONCUR_READ_ONLY
*/
public void updateBlob(int columnIndex, Blob b) throws SQLException {
crsInternal.updateBlob(columnIndex, b);
}
/**
* Sets the designated column in either the current row or the insert
* row of this <code>JoinRowSetImpl object with the given
* <code>Blob object.
* <P>
* This method updates a column value in the current row or the insert
* row of this rowset, but it does not update the database.
* If the cursor is on a row in the rowset, the
* method {@link #updateRow} must be called to update the database.
* If the cursor is on the insert row, the method {@link #insertRow}
* must be called, which will insert the new row into both this rowset
* and the database. Either of these methods must be called before the
* cursor moves to another row.
*
* @param columnName a <code>String object giving the name of the column
* to be updated; must match one of the column names in this
* <code>JoinRowSetImpl object
* @param b the <code>java.sql.Blob object that will be set as
* the new column value
* @throws SQLException if (1) the given column name is not valid,
* (2) the cursor is not on one of this rowset's rows or its
* insert row, or (3) this rowset is
* <code>ResultSet.CONCUR_READ_ONLY
*/
public void updateBlob(String columnName, Blob b) throws SQLException {
crsInternal.updateBlob(columnName, b);
}
/**
* Sets the designated column in either the current row or the insert
* row of this <code>JoinRowSetImpl object with the given
* <code>Array object.
* <P>
* This method updates a column value in the current row or the insert
* row of this rowset, but it does not update the database.
* If the cursor is on a row in the rowset, the
* method {@link #updateRow} must be called to update the database.
* If the cursor is on the insert row, the method {@link #insertRow}
* must be called, which will insert the new row into both this rowset
* and the database. Either of these methods must be called before the
* cursor moves to another row.
*
* @param columnIndex the first column is <code>1, the second
* is <code>2, and so on; must be 1 or larger
* and equal to or less than the number of columns in this rowset
* @param a the <code>java.sql.Array object that will be set as
* the new column value
* @throws SQLException if (1) the given column index is out of bounds,
* (2) the cursor is not on one of this rowset's rows or its
* insert row, or (3) this rowset is
* <code>ResultSet.CONCUR_READ_ONLY
*/
public void updateArray(int columnIndex, Array a) throws SQLException {
crsInternal.updateArray(columnIndex, a);
}
/**
* Sets the designated column in either the current row or the insert
* row of this <code>JoinRowSetImpl object with the given
* <code>Array object.
* <P>
* This method updates a column value in the current row or the insert
* row of this rowset, but it does not update the database.
* If the cursor is on a row in the rowset, the
* method {@link #updateRow} must be called to update the database.
* If the cursor is on the insert row, the method {@link #insertRow}
* must be called, which will insert the new row into both this rowset
* and the database. Either of these methods must be called before the
* cursor moves to another row.
*
* @param columnName a <code>String object giving the name of the column
* to be updated; must match one of the column names in this
* <code>JoinRowSetImpl object
* @param a the <code>java.sql.Array object that will be set as
* the new column value
* @throws SQLException if (1) the given column name is not valid,
* (2) the cursor is not on one of this rowset's rows or its
* insert row, or (3) this rowset is
* <code>ResultSet.CONCUR_READ_ONLY
*/
public void updateArray(String columnName, Array a) throws SQLException {
crsInternal.updateArray(columnName, a);
}
/**
* Populates this <code>JoinRowSetImpl object with data.
* This form of the method uses the rowset's user, password, and url or
* data source name properties to create a database
* connection. If properties that are needed
* have not been set, this method will throw an exception.
* <P>
* Another form of this method uses an existing JDBC <code>Connection
* object instead of creating a new one; therefore, it ignores the
* properties used for establishing a new connection.
* <P>
* The query specified by the command property is executed to create a
* <code>ResultSet object from which to retrieve data.
* The current contents of the rowset are discarded, and the
* rowset's metadata is also (re)set. If there are outstanding updates,
* they are also ignored.
* <P>
* The method <code>execute closes any database connections that it
* creates.
*
* @throws SQLException if an error occurs or the
* necessary properties have not been set
*/
public void execute() throws SQLException {
crsInternal.execute();
}
/**
* Populates this <code>JoinRowSetImpl object with data,
* using the given connection to produce the result set from
* which data will be read. A second form of this method,
* which takes no arguments, uses the values from this rowset's
* user, password, and either url or data source properties to
* create a new database connection. The form of <code>execute
* that is given a connection ignores these properties.
*
* @param conn A standard JDBC <code>Connection object with valid
* properties that the <code>JoinRowSet implementation
* can pass to a synchronization provider to establish a
* connection to the datasource
* @throws SQLException if an invalid <code>Connection is supplied
* or an error occurs in establishing the connection to the
* data soure
* @see java.sql.Connection
*/
public void execute(Connection conn) throws SQLException {
crsInternal.execute(conn);
}
/**
* Provide interface coverage for getURL(int) in ResultSet->RowSet
*/
public java.net.URL getURL(int columnIndex) throws SQLException {
return crsInternal.getURL(columnIndex);
}
/**
* Provide interface coverage for getURL(String) in ResultSet->RowSet
*/
public java.net.URL getURL(String columnName) throws SQLException {
return crsInternal.getURL(columnName);
}
/**
* Creates a new <code>WebRowSet object, populates it with the
* data in the given <code>ResultSet object, and writes it
* to the given <code>java.io.Writer object in XML format.
*
* @throws SQLException if an error occurs writing out the rowset
* contents to XML
*/
public void writeXml(ResultSet rs, java.io.Writer writer)
throws SQLException {
wrs = new WebRowSetImpl();
wrs.populate(rs);
wrs.writeXml(writer);
}
/**
* Writes this <code>JoinRowSet object to the given
* <code>java.io.Writer object in XML format. In
* addition to the rowset's data, its properties and metadata
* are also included.
*
* @throws SQLException if an error occurs writing out the rowset
* contents to XML
*/
public void writeXml(java.io.Writer writer) throws SQLException {
createWebRowSet().writeXml(writer);
}
/**
* Reads this <code>JoinRowSet object in its XML format.
*
* @throws SQLException if a database access error occurs
*/
public void readXml(java.io.Reader reader) throws SQLException {
wrs = new WebRowSetImpl();
wrs.readXml(reader);
crsInternal = (CachedRowSetImpl)wrs;
}
// Stream based methods
/**
* Reads a stream based XML input to populate an <code>WebRowSet
*
* @throws SQLException if a data source access occurs
* @throws IOException if a IO exception occurs
*/
public void readXml(java.io.InputStream iStream) throws SQLException, IOException {
wrs = new WebRowSetImpl();
wrs.readXml(iStream);
crsInternal = (CachedRowSetImpl)wrs;
}
/**
* Creates an an output stream of the internal state and contents of a
* <code>WebRowSet for XML proceessing
*
* @throws SQLException if a datasource access occurs
* @throws IOException if an IO exception occurs
*/
public void writeXml(java.io.OutputStream oStream) throws SQLException, IOException {
createWebRowSet().writeXml(oStream);
}
/**
* Creates a new <code>WebRowSet object, populates it with
* the contents of the <code>ResultSet and creates an output
* streams the internal state and contents of the rowset for XML processing.
*
* @throws SQLException if a datasource access occurs
* @throws IOException if an IO exception occurs
*/
public void writeXml(ResultSet rs, java.io.OutputStream oStream) throws SQLException, IOException {
wrs = new WebRowSetImpl();
wrs.populate(rs);
wrs.writeXml(oStream);
}
/**
* %%% Javadoc comments to be added here
*/
private WebRowSet createWebRowSet() throws SQLException {
if(wrs != null) {
// check if it has already been initialized.
return wrs;
} else {
wrs = new WebRowSetImpl();
crsInternal.beforeFirst();
wrs.populate(crsInternal);
return wrs;
}
}
/**
* Returns the last set SQL <code>JOIN type in this JoinRowSetImpl
* object
*
* @return joinType One of the standard JoinRowSet static field JOIN types
* @throws SQLException if an error occurs determining the current join type
*/
public int getJoinType() throws SQLException {
if (vecJoinType == null) {
// Default JoinRowSet type
this.setJoinType(JoinRowSet.INNER_JOIN);
}
Integer i = vecJoinType.get(vecJoinType.size()-1);
return i.intValue();
}
/**
* The listener will be notified whenever an event occurs on this <code>JoinRowSet
* object.
* <P>
* A listener might, for example, be a table or graph that needs to
* be updated in order to accurately reflect the current state of
* the <code>RowSet object.
* <p>
* <b>Note: if the RowSetListener object is
* <code>null, this method silently discards the null
* value and does not add a null reference to the set of listeners.
* <p>
* <b>Note: if the listener is already set, and the new RowSetListerner
* instance is added to the set of listeners already registered to receive
* event notifications from this <code>RowSet.
*
* @param listener an object that has implemented the
* <code>javax.sql.RowSetListener interface and wants to be notified
* of any events that occur on this <code>JoinRowSet object; May be
* null.
* @see #removeRowSetListener
*/
public void addRowSetListener(RowSetListener listener) {
crsInternal.addRowSetListener(listener);
}
/**
* Removes the designated object from this <code>JoinRowSet object's list of listeners.
* If the given argument is not a registered listener, this method
* does nothing.
*
* <b>Note: if the RowSetListener object is
* <code>null, this method silently discards the null
* value.
*
* @param listener a <code>RowSetListener object that is on the list
* of listeners for this <code>JoinRowSet object
* @see #addRowSetListener
*/
public void removeRowSetListener(RowSetListener listener) {
crsInternal.removeRowSetListener(listener);
}
/**
* Converts this <code>JoinRowSetImpl object to a collection
* of tables. The sample implementation utilitizes the <code>TreeMap
* collection type.
* This class guarantees that the map will be in ascending key order,
* sorted according to the natural order for the key's class.
*
* @return a <code>Collection object consisting of tables,
* each of which is a copy of a row in this
* <code>JoinRowSetImpl object
* @throws SQLException if an error occurs in generating the collection
* @see #toCollection(int)
* @see #toCollection(String)
* @see java.util.TreeMap
*/
public Collection<?> toCollection() throws SQLException {
return crsInternal.toCollection();
}
/**
* Returns the specified column of this <code>JoinRowSetImpl object
* as a <code>Collection object. This method makes a copy of the
* column's data and utilitizes the <code>Vector to establish the
* collection. The <code>Vector class implements a growable array
* objects allowing the individual components to be accessed using an
* an integer index similar to that of an array.
*
* @return a <code>Collection object that contains the value(s)
* stored in the specified column of this
* <code>JoinRowSetImpl
* object
* @throws SQLException if an error occurs generated the collection; or
* an invalid column is provided.
* @see #toCollection()
* @see #toCollection(String)
* @see java.util.Vector
*/
public Collection<?> toCollection(int column) throws SQLException {
return crsInternal.toCollection(column);
}
/**
* Returns the specified column of this <code>JoinRowSetImpl object
* as a <code>Collection object. This method makes a copy of the
* column's data and utilitizes the <code>Vector to establish the
* collection. The <code>Vector class implements a growable array
* objects allowing the individual components to be accessed using an
* an integer index similar to that of an array.
*
* @return a <code>Collection object that contains the value(s)
* stored in the specified column of this
* <code>JoinRowSetImpl
* object
* @throws SQLException if an error occurs generated the collection; or
* an invalid column is provided.
* @see #toCollection()
* @see #toCollection(int)
* @see java.util.Vector
*/
public Collection<?> toCollection(String column) throws SQLException {
return crsInternal.toCollection(column);
}
/**
* Creates a <code>RowSet object that is a copy of
* this <code>JoinRowSetImpl object's table structure
* and the constraints only.
* There will be no data in the object being returned.
* Updates made on a copy are not visible to the original rowset.
* <P>
* This helps in getting the underlying XML schema which can
* be used as the basis for populating a <code>WebRowSet.
*
* @return a new <code>CachedRowSet object that is a copy
* of this <code>JoinRowSetImpl object's schema and
* retains all the constraints on the original rowset but contains
* no data
* @throws SQLException if an error occurs in generating the copy
* of the <code>CachedRowSet object
* @see #createShared
* @see #createCopy
* @see #createCopyNoConstraints
* @see javax.sql.RowSetEvent
* @see javax.sql.RowSetListener
*/
public CachedRowSet createCopySchema() throws SQLException {
return crsInternal.createCopySchema();
}
/**
* {@inheritDoc}
*/
public void setSyncProvider(String providerStr) throws SQLException {
crsInternal.setSyncProvider(providerStr);
}
/**
* {@inheritDoc}
*/
public void acceptChanges() throws SyncProviderException {
crsInternal.acceptChanges();
}
/**
* {@inheritDoc}
*/
public SyncProvider getSyncProvider() throws SQLException {
return crsInternal.getSyncProvider();
}
/**
* This method re populates the resBundle
* during the deserialization process
*
*/
private void readObject(ObjectInputStream ois) throws IOException, ClassNotFoundException {
// Default state initialization happens here
ois.defaultReadObject();
// Initialization of transient Res Bundle happens here .
try {
resBundle = JdbcRowSetResourceBundle.getJdbcRowSetResourceBundle();
} catch(IOException ioe) {
throw new RuntimeException(ioe);
}
}
static final long serialVersionUID = -5590501621560008453L;
}
Other Java examples (source code examples)Here is a short list of links related to this Java JoinRowSetImpl.java source code file: |
... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2024 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.