com.mysql.jdbc
Class RowDataCursor

java.lang.Object
  extended by com.mysql.jdbc.RowDataCursor
All Implemented Interfaces:
RowData

public class RowDataCursor
extends java.lang.Object
implements RowData

Model for result set data backed by a cursor. Only works for forward-only result sets (but still works with updatable concurrency).


Field Summary
 
Fields inherited from interface com.mysql.jdbc.RowData
RESULT_SET_SIZE_UNKNOWN
 
Constructor Summary
RowDataCursor(MysqlIO ioChannel, ServerPreparedStatement creatingStatement, Field[] metadata)
          Creates a new cursor-backed row provider.
 
Method Summary
 void addRow(ResultSetRow row)
          Adds a row to this row data.
 void afterLast()
          Moves to after last.
 void beforeFirst()
          Moves to before first.
 void beforeLast()
          Moves to before last so next el is the last el.
 void close()
          We're done.
 ResultSetRow getAt(int ind)
          Only works on non dynamic result sets.
 int getCurrentRowNumber()
          Returns the current position in the result set as a row number.
 ResultSetInternalMethods getOwner()
          Returns the result set that 'owns' this RowData
 boolean hasNext()
          Returns true if another row exists.
 boolean isAfterLast()
          Returns true if we got the last element.
 boolean isBeforeFirst()
          Returns if iteration has not occured yet.
 boolean isDynamic()
          Returns true if the result set is dynamic.
 boolean isEmpty()
          Has no records.
 boolean isFirst()
          Are we on the first row of the result set?
 boolean isLast()
          Are we on the last row of the result set?
 void moveRowRelative(int rows)
          Moves the current position relative 'rows' from the current position.
 ResultSetRow next()
          Returns the next row.
 void removeRow(int ind)
          Removes the row at the given index.
 void setCurrentRow(int rowNumber)
          Moves the current position in the result set to the given row number.
 void setMetadata(Field[] metadata)
          Sometimes the driver doesn't have metadata until after the statement has the result set in-hand (because it's cached), so it can call this to set it after the fact.
 void setOwner(ResultSetImpl rs)
          Set the result set that 'owns' this RowData
 int size()
          Only works on non dynamic result sets.
 boolean wasEmpty()
          Did this result set have no rows?
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

RowDataCursor

public RowDataCursor(MysqlIO ioChannel,
                     ServerPreparedStatement creatingStatement,
                     Field[] metadata)
Creates a new cursor-backed row provider.

Parameters:
ioChannel - connection to the server.
creatingStatement - statement that opened the cursor.
metadata - field-level metadata for the results that this cursor covers.
Method Detail

isAfterLast

public boolean isAfterLast()
Returns true if we got the last element.

Specified by:
isAfterLast in interface RowData
Returns:
DOCUMENT ME!

getAt

public ResultSetRow getAt(int ind)
                   throws java.sql.SQLException
Only works on non dynamic result sets.

Specified by:
getAt in interface RowData
Parameters:
index - row number to get at
Returns:
row data at index
Throws:
java.sql.SQLException - if a database error occurs

isBeforeFirst

public boolean isBeforeFirst()
                      throws java.sql.SQLException
Returns if iteration has not occured yet.

Specified by:
isBeforeFirst in interface RowData
Returns:
true if before first row
Throws:
java.sql.SQLException - if a database error occurs

setCurrentRow

public void setCurrentRow(int rowNumber)
                   throws java.sql.SQLException
Moves the current position in the result set to the given row number.

Specified by:
setCurrentRow in interface RowData
Parameters:
rowNumber - row to move to
Throws:
java.sql.SQLException - if a database error occurs

getCurrentRowNumber

public int getCurrentRowNumber()
                        throws java.sql.SQLException
Returns the current position in the result set as a row number.

Specified by:
getCurrentRowNumber in interface RowData
Returns:
the current row number
Throws:
java.sql.SQLException - if a database error occurs

isDynamic

public boolean isDynamic()
Returns true if the result set is dynamic. This means that move back and move forward won't work because we do not hold on to the records.

Specified by:
isDynamic in interface RowData
Returns:
true if this result set is streaming from the server

isEmpty

public boolean isEmpty()
                throws java.sql.SQLException
Has no records.

Specified by:
isEmpty in interface RowData
Returns:
true if no records
Throws:
java.sql.SQLException - if a database error occurs

isFirst

public boolean isFirst()
                throws java.sql.SQLException
Are we on the first row of the result set?

Specified by:
isFirst in interface RowData
Returns:
true if on first row
Throws:
java.sql.SQLException - if a database error occurs

isLast

public boolean isLast()
               throws java.sql.SQLException
Are we on the last row of the result set?

Specified by:
isLast in interface RowData
Returns:
true if on last row
Throws:
java.sql.SQLException - if a database error occurs

addRow

public void addRow(ResultSetRow row)
            throws java.sql.SQLException
Adds a row to this row data.

Specified by:
addRow in interface RowData
Parameters:
row - the row to add
Throws:
java.sql.SQLException - if a database error occurs

afterLast

public void afterLast()
               throws java.sql.SQLException
Moves to after last.

Specified by:
afterLast in interface RowData
Throws:
java.sql.SQLException - if a database error occurs

beforeFirst

public void beforeFirst()
                 throws java.sql.SQLException
Moves to before first.

Specified by:
beforeFirst in interface RowData
Throws:
java.sql.SQLException - if a database error occurs

beforeLast

public void beforeLast()
                throws java.sql.SQLException
Moves to before last so next el is the last el.

Specified by:
beforeLast in interface RowData
Throws:
java.sql.SQLException - if a database error occurs

close

public void close()
           throws java.sql.SQLException
We're done.

Specified by:
close in interface RowData
Throws:
java.sql.SQLException - if a database error occurs

hasNext

public boolean hasNext()
                throws java.sql.SQLException
Returns true if another row exists.

Specified by:
hasNext in interface RowData
Returns:
true if more rows
Throws:
java.sql.SQLException - if a database error occurs

moveRowRelative

public void moveRowRelative(int rows)
                     throws java.sql.SQLException
Moves the current position relative 'rows' from the current position.

Specified by:
moveRowRelative in interface RowData
Parameters:
rows - the relative number of rows to move
Throws:
java.sql.SQLException - if a database error occurs

next

public ResultSetRow next()
                  throws java.sql.SQLException
Returns the next row.

Specified by:
next in interface RowData
Returns:
the next row value
Throws:
java.sql.SQLException - if a database error occurs

removeRow

public void removeRow(int ind)
               throws java.sql.SQLException
Removes the row at the given index.

Specified by:
removeRow in interface RowData
Parameters:
index - the row to move to
Throws:
java.sql.SQLException - if a database error occurs

size

public int size()
Only works on non dynamic result sets.

Specified by:
size in interface RowData
Returns:
the size of this row data

setOwner

public void setOwner(ResultSetImpl rs)
Description copied from interface: RowData
Set the result set that 'owns' this RowData

Specified by:
setOwner in interface RowData
Parameters:
rs - the result set that 'owns' this RowData

getOwner

public ResultSetInternalMethods getOwner()
Description copied from interface: RowData
Returns the result set that 'owns' this RowData

Specified by:
getOwner in interface RowData

wasEmpty

public boolean wasEmpty()
Description copied from interface: RowData
Did this result set have no rows?

Specified by:
wasEmpty in interface RowData

setMetadata

public void setMetadata(Field[] metadata)
Description copied from interface: RowData
Sometimes the driver doesn't have metadata until after the statement has the result set in-hand (because it's cached), so it can call this to set it after the fact.

Specified by:
setMetadata in interface RowData
Parameters:
metadata - field-level metadata for the result set