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

Nested Classes
`(package private) class` `RowDataDynamic.OperationNotSupportedException`

### Field Summary

### Fields inherited from interface com.mysql.jdbc.RowData

`RESULT_SET_SIZE_UNKNOWN`

### Constructor Summary

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

### Method Summary

Methods
`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