## com.mysql.jdbc
Class RowDataDynamic

    java.lang.Object
      com.mysql.jdbc.RowDataDynamic

All Implemented Interfaces:
  RowData

    public class RowDataDynamic

extends java.lang.Object
implements RowData

Allows streaming of MySQL data.

Nested Class Summary
`(package private) class` `RowDataDynamic.OperationNotSupportedException`

Field Summary

Fields inherited from interface com.mysql.jdbc.RowData
`RESULT_SET_SIZE_UNKNOWN`

Constructor Summary
`RowDataDynamic(MysqlIO io, int colCount, Field[] fields, boolean isBinaryEncoded)` Creates a new RowDataDynamic object.

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 exsists.
`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

### RowDataDynamic

    public RowDataDynamic(MysqlIO io,
                          int colCount,
                          Field[] fields,
                          boolean isBinaryEncoded)
                   throws java.sql.SQLException

  Creates a new RowDataDynamic object.

  Parameters:
    `io` - the connection to MySQL that this data is coming from
    `metadata` - the metadata that describe this data
    `isBinaryEncoded` - is this data in native format?
    `colCount` - the number of columns
  Throws:
    `java.sql.SQLException` - if the next record can not be found

Method Detail

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

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

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

### getOwner

    public ResultSetInternalMethods getOwner()

  Description copied from interface: `RowData`
  Returns the result set that 'owns' this RowData

  Specified by:
    `getOwner` in interface `RowData`
  See Also:
    `RowData.getOwner()`

### hasNext

    public boolean hasNext()
                    throws java.sql.SQLException

  Returns true if another row exsists.

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

### isAfterLast

    public boolean isAfterLast()
                        throws java.sql.SQLException

  Returns true if we got the last element.

  Specified by:
    `isAfterLast` in interface `RowData`
  Returns:
    true if after last row
  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

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

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

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

### 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
  See Also:
    `com.mysql.jdbc.RowData#setOwner(com.mysql.jdbc.ResultSetInternalMethods)`

### size

    public int size()

  Only works on non dynamic result sets.

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

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