Module java.sql.rowset
Package javax.sql.rowset

## Class RowSetMetaDataImpl

- java.lang.Object
- - javax.sql.rowset.RowSetMetaDataImpl

- All Implemented Interfaces:
    `Serializable`, `ResultSetMetaData`, `Wrapper`, `RowSetMetaData`

      public class RowSetMetaDataImpl
      extends Object
      implements RowSetMetaData, Serializable

  Provides implementations for the methods that set and get metadata information about a `RowSet` object's columns. A `RowSetMetaDataImpl` object keeps track of the number of columns in the rowset and maintains an internal array of column attributes for each column.

  A `RowSet` object creates a `RowSetMetaDataImpl` object internally in order to set and retrieve information about its columns.

  NOTE: All metadata in a `RowSetMetaDataImpl` object should be considered as unavailable until the `RowSet` object that it describes is populated. Therefore, any `RowSetMetaDataImpl` method that retrieves information is defined as having unspecified behavior when it is called before the `RowSet` object contains data.

  Since:
    1.5
  See Also:
    Serialized Form

- - ### Field Summary

    - ### Fields declared in interface java.sql.ResultSetMetaData

      `columnNoNulls, columnNullable, columnNullableUnknown`

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `RowSetMetaDataImpl()` |

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `String` | `getCatalogName​(int columnIndex)` | Retrieves the catalog name of the table from which the value in the designated column was derived.
    `String` | `getColumnClassName​(int columnIndex)` | Retrieves the fully-qualified name of the class in the Java programming language to which a value in the designated column will be mapped.
    `int` | `getColumnCount()` | Retrieves the number of columns in the `RowSet` object for which this `RowSetMetaDataImpl` object was created.
    `int` | `getColumnDisplaySize​(int columnIndex)` | Retrieves the normal maximum width in chars of the designated column.
    `String` | `getColumnLabel​(int columnIndex)` | Retrieves the suggested column title for the designated column for use in printouts and displays.
    `String` | `getColumnName​(int columnIndex)` | Retrieves the name of the designated column.
    `int` | `getColumnType​(int columnIndex)` | Retrieves the type code (one of the `java.sql.Types` constants) for the SQL type of the value stored in the designated column.
    `String` | `getColumnTypeName​(int columnIndex)` | Retrieves the DBMS-specific type name for values stored in the designated column.
    `int` | `getPrecision​(int columnIndex)` | Retrieves the total number of digits for values stored in the designated column.
    `int` | `getScale​(int columnIndex)` | Retrieves the number of digits to the right of the decimal point for values stored in the designated column.
    `String` | `getSchemaName​(int columnIndex)` | Retrieves the schema name of the table from which the value in the designated column was derived.
    `String` | `getTableName​(int columnIndex)` | Retrieves the name of the table from which the value in the designated column was derived.
    `boolean` | `isAutoIncrement​(int columnIndex)` | Retrieves whether a value stored in the designated column is automatically numbered, and thus readonly.
    `boolean` | `isCaseSensitive​(int columnIndex)` | Indicates whether the case of the designated column's name matters.
    `boolean` | `isCurrency​(int columnIndex)` | Indicates whether a value stored in the designated column is a cash value.
    `boolean` | `isDefinitelyWritable​(int columnIndex)` | Indicates whether a write operation on the designated column will definitely succeed.
    `int` | `isNullable​(int columnIndex)` | Retrieves a constant indicating whether it is possible to store a `NULL` value in the designated column.
    `boolean` | `isReadOnly​(int columnIndex)` | Indicates whether the designated column is definitely not writable, thus readonly.
    `boolean` | `isSearchable​(int columnIndex)` | Indicates whether a value stored in the designated column can be used in a `WHERE` clause.
    `boolean` | `isSigned​(int columnIndex)` | Indicates whether a value stored in the designated column is a signed number.
    `boolean` | `isWrapperFor​(Class<?> interfaces)` | Returns true if this either implements the interface argument or is directly or indirectly a wrapper for an object that does.
    `boolean` | `isWritable​(int columnIndex)` | Indicates whether it is possible for a write operation on the designated column to succeed.
    `void` | `setAutoIncrement​(int columnIndex, boolean property)` | Sets whether the designated column is automatically numbered, thus read-only, to the given `boolean` value.
    `void` | `setCaseSensitive​(int columnIndex, boolean property)` | Sets whether the name of the designated column is case sensitive to the given `boolean`.
    `void` | `setCatalogName​(int columnIndex, String catalogName)` | Sets the catalog name of the table from which the designated column was derived to catalogName.
    `void` | `setColumnCount​(int columnCount)` | Sets to the given number the number of columns in the `RowSet` object for which this `RowSetMetaDataImpl` object was created.
    `void` | `setColumnDisplaySize​(int columnIndex, int size)` | Sets the normal maximum number of chars in the designated column to the given number.
    `void` | `setColumnLabel​(int columnIndex, String label)` | Sets the suggested column label for use in printouts and displays, if any, to label.
    `void` | `setColumnName​(int columnIndex, String columnName)` | Sets the column name of the designated column to the given name.
    `void` | `setColumnType​(int columnIndex, int SQLType)` | Sets the SQL type code for values stored in the designated column to the given type code from the class `java.sql.Types`.
    `void` | `setColumnTypeName​(int columnIndex, String typeName)` | Sets the type name used by the data source for values stored in the designated column to the given type name.
    `void` | `setCurrency​(int columnIndex, boolean property)` | Sets whether a value stored in the designated column is a cash value to the given `boolean`.
    `void` | `setNullable​(int columnIndex, int property)` | Sets whether a value stored in the designated column can be set to `NULL` to the given constant from the interface `ResultSetMetaData`.
    `void` | `setPrecision​(int columnIndex, int precision)` | Sets the total number of decimal digits in a value stored in the designated column to the given number.
    `void` | `setScale​(int columnIndex, int scale)` | Sets the number of digits to the right of the decimal point in a value stored in the designated column to the given number.
    `void` | `setSchemaName​(int columnIndex, String schemaName)` | Sets the designated column's table's schema name, if any, to schemaName.
    `void` | `setSearchable​(int columnIndex, boolean property)` | Sets whether a value stored in the designated column can be used in a `WHERE` clause to the given `boolean` value.
    `void` | `setSigned​(int columnIndex, boolean property)` | Sets whether a value stored in the designated column is a signed number to the given `boolean`.
    `void` | `setTableName​(int columnIndex, String tableName)` | Sets the name of the table from which the designated column was derived to the given table name.
    `<T> T` | `unwrap​(Class<T> iface)` | Returns an object that implements the given interface to allow access to non-standard methods, or standard methods not exposed by the proxy.

    - ### Methods declared in class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### RowSetMetaDataImpl

          public RowSetMetaDataImpl()

  - ### Method Detail

    - #### setColumnCount

          public void setColumnCount​(int columnCount)
                              throws SQLException

      Sets to the given number the number of columns in the `RowSet` object for which this `RowSetMetaDataImpl` object was created.
      Specified by:
        `setColumnCount` in interface `RowSetMetaData`
      Parameters:
        `columnCount` - an `int` giving the number of columns in the `RowSet` object
      Throws:
        `SQLException` - if the given number is equal to or less than zero

    - #### setAutoIncrement

          public void setAutoIncrement​(int columnIndex,
                                       boolean property)
                                throws SQLException

      Sets whether the designated column is automatically numbered, thus read-only, to the given `boolean` value.
      Specified by:
        `setAutoIncrement` in interface `RowSetMetaData`
      Parameters:
        `columnIndex` - the first column is 1, the second is 2, and so on; must be between `1` and the number of columns in the rowset, inclusive
        `property` - `true` if the given column is automatically incremented; `false` otherwise
      Throws:
        `SQLException` - if a database access error occurs or the given index is out of bounds

    - #### setCaseSensitive

          public void setCaseSensitive​(int columnIndex,
                                       boolean property)
                                throws SQLException

      Sets whether the name of the designated column is case sensitive to the given `boolean`.
      Specified by:
        `setCaseSensitive` in interface `RowSetMetaData`
      Parameters:
        `columnIndex` - the first column is 1, the second is 2, and so on; must be between `1` and the number of columns in the rowset, inclusive
        `property` - `true` to indicate that the column name is case sensitive; `false` otherwise
      Throws:
        `SQLException` - if a database access error occurs or the given column number is out of bounds

    - #### setSearchable

          public void setSearchable​(int columnIndex,
                                    boolean property)
                             throws SQLException

      Sets whether a value stored in the designated column can be used in a `WHERE` clause to the given `boolean` value.
      Specified by:
        `setSearchable` in interface `RowSetMetaData`
      Parameters:
        `columnIndex` - the first column is 1, the second is 2, and so on; must be between `1` and the number of columns in the rowset, inclusive
        `property` - `true` to indicate that a column value can be used in a `WHERE` clause; `false` otherwise
      Throws:
        `SQLException` - if a database access error occurs or the given column number is out of bounds

    - #### setCurrency

          public void setCurrency​(int columnIndex,
                                  boolean property)
                           throws SQLException

      Sets whether a value stored in the designated column is a cash value to the given `boolean`.
      Specified by:
        `setCurrency` in interface `RowSetMetaData`
      Parameters:
        `columnIndex` - the first column is 1, the second is 2, and so on; must be between `1` and the number of columns, inclusive between `1` and the number of columns, inclusive
        `property` - true if the value is a cash value; false otherwise.
      Throws:
        `SQLException` - if a database access error occurs or the given column number is out of bounds

    - #### setNullable

          public void setNullable​(int columnIndex,
                                  int property)
                           throws SQLException

      Sets whether a value stored in the designated column can be set to `NULL` to the given constant from the interface `ResultSetMetaData`.
      Specified by:
        `setNullable` in interface `RowSetMetaData`
      Parameters:
        `columnIndex` - the first column is 1, the second is 2, and so on; must be between `1` and the number of columns, inclusive
        `property` - one of the following `ResultSetMetaData` constants: `columnNoNulls`, `columnNullable`, or `columnNullableUnknown`
      Throws:
        `SQLException` - if a database access error occurs, the given column number is out of bounds, or the value supplied for the property parameter is not one of the following constants: `ResultSetMetaData.columnNoNulls`, `ResultSetMetaData.columnNullable`, or `ResultSetMetaData.columnNullableUnknown`

    - #### setSigned

          public void setSigned​(int columnIndex,
                                boolean property)
                         throws SQLException

      Sets whether a value stored in the designated column is a signed number to the given `boolean`.
      Specified by:
        `setSigned` in interface `RowSetMetaData`
      Parameters:
        `columnIndex` - the first column is 1, the second is 2, and so on; must be between `1` and the number of columns, inclusive
        `property` - `true` to indicate that a column value is a signed number; `false` to indicate that it is not
      Throws:
        `SQLException` - if a database access error occurs or the given column number is out of bounds

    - #### setColumnDisplaySize

          public void setColumnDisplaySize​(int columnIndex,
                                           int size)
                                    throws SQLException

      Sets the normal maximum number of chars in the designated column to the given number.
      Specified by:
        `setColumnDisplaySize` in interface `RowSetMetaData`
      Parameters:
        `columnIndex` - the first column is 1, the second is 2, and so on; must be between `1` and the number of columns, inclusive
        `size` - the maximum size of the column in chars; must be `0` or more
      Throws:
        `SQLException` - if a database access error occurs, the given column number is out of bounds, or size is less than `0`

    - #### setColumnLabel

          public void setColumnLabel​(int columnIndex,
                                     String label)
                              throws SQLException

      Sets the suggested column label for use in printouts and displays, if any, to label. If label is `null`, the column label is set to an empty string ("").
      Specified by:
        `setColumnLabel` in interface `RowSetMetaData`
      Parameters:
        `columnIndex` - the first column is 1, the second is 2, and so on; must be between `1` and the number of columns, inclusive
        `label` - the column label to be used in printouts and displays; if the column label is `null`, an empty `String` is set
      Throws:
        `SQLException` - if a database access error occurs or the given column index is out of bounds

    - #### setColumnName

          public void setColumnName​(int columnIndex,
                                    String columnName)
                             throws SQLException

      Sets the column name of the designated column to the given name.
      Specified by:
        `setColumnName` in interface `RowSetMetaData`
      Parameters:
        `columnIndex` - the first column is 1, the second is 2, and so on; must be between `1` and the number of columns, inclusive
        `columnName` - a `String` object indicating the column name; if the given name is `null`, an empty `String` is set
      Throws:
        `SQLException` - if a database access error occurs or the given column index is out of bounds

    - #### setSchemaName

          public void setSchemaName​(int columnIndex,
                                    String schemaName)
                             throws SQLException

      Sets the designated column's table's schema name, if any, to schemaName. If schemaName is `null`, the schema name is set to an empty string ("").
      Specified by:
        `setSchemaName` in interface `RowSetMetaData`
      Parameters:
        `columnIndex` - the first column is 1, the second is 2, and so on; must be between `1` and the number of columns, inclusive
        `schemaName` - the schema name for the table from which a value in the designated column was derived; may be an empty `String` or `null`
      Throws:
        `SQLException` - if a database access error occurs or the given column number is out of bounds

    - #### setPrecision

          public void setPrecision​(int columnIndex,
                                   int precision)
                            throws SQLException

      Sets the total number of decimal digits in a value stored in the designated column to the given number.
      Specified by:
        `setPrecision` in interface `RowSetMetaData`
      Parameters:
        `columnIndex` - the first column is 1, the second is 2, and so on; must be between `1` and the number of columns, inclusive
        `precision` - the total number of decimal digits; must be `0` or more
      Throws:
        `SQLException` - if a database access error occurs, columnIndex is out of bounds, or precision is less than `0`

    - #### setScale

          public void setScale​(int columnIndex,
                               int scale)
                        throws SQLException

      Sets the number of digits to the right of the decimal point in a value stored in the designated column to the given number.
      Specified by:
        `setScale` in interface `RowSetMetaData`
      Parameters:
        `columnIndex` - the first column is 1, the second is 2, and so on; must be between `1` and the number of columns, inclusive
        `scale` - the number of digits to the right of the decimal point; must be zero or greater
      Throws:
        `SQLException` - if a database access error occurs, columnIndex is out of bounds, or scale is less than `0`

    - #### setTableName

          public void setTableName​(int columnIndex,
                                   String tableName)
                            throws SQLException

      Sets the name of the table from which the designated column was derived to the given table name.
      Specified by:
        `setTableName` in interface `RowSetMetaData`
      Parameters:
        `columnIndex` - the first column is 1, the second is 2, and so on; must be between `1` and the number of columns, inclusive
        `tableName` - the column's table name; may be `null` or an empty string
      Throws:
        `SQLException` - if a database access error occurs or the given column number is out of bounds

    - #### setCatalogName

          public void setCatalogName​(int columnIndex,
                                     String catalogName)
                              throws SQLException

      Sets the catalog name of the table from which the designated column was derived to catalogName. If catalogName is `null`, the catalog name is set to an empty string.
      Specified by:
        `setCatalogName` in interface `RowSetMetaData`
      Parameters:
        `columnIndex` - the first column is 1, the second is 2, and so on; must be between `1` and the number of columns, inclusive
        `catalogName` - the column's table's catalog name; if the catalogName is `null`, an empty `String` is set
      Throws:
        `SQLException` - if a database access error occurs or the given column number is out of bounds

    - #### setColumnType

          public void setColumnType​(int columnIndex,
                                    int SQLType)
                             throws SQLException

      Sets the SQL type code for values stored in the designated column to the given type code from the class `java.sql.Types`.
      Specified by:
        `setColumnType` in interface `RowSetMetaData`
      Parameters:
        `columnIndex` - the first column is 1, the second is 2, and so on; must be between `1` and the number of columns, inclusive
        `SQLType` - the designated column's SQL type, which must be one of the constants in the class `java.sql.Types`
      Throws:
        `SQLException` - if a database access error occurs, the given column number is out of bounds, or the column type specified is not one of the constants in `java.sql.Types`
      See Also:
        `Types`

    - #### setColumnTypeName

          public void setColumnTypeName​(int columnIndex,
                                        String typeName)
                                 throws SQLException

      Sets the type name used by the data source for values stored in the designated column to the given type name.
      Specified by:
        `setColumnTypeName` in interface `RowSetMetaData`
      Parameters:
        `columnIndex` - the first column is 1, the second is 2, and so on; must be between `1` and the number of columns, inclusive
        `typeName` - the data source-specific type name; if typeName is `null`, an empty `String` is set
      Throws:
        `SQLException` - if a database access error occurs or the given column number is out of bounds

    - #### getColumnCount

          public int getColumnCount()
                             throws SQLException

      Retrieves the number of columns in the `RowSet` object for which this `RowSetMetaDataImpl` object was created.
      Specified by:
        `getColumnCount` in interface `ResultSetMetaData`
      Returns:
        the number of columns
      Throws:
        `SQLException` - if an error occurs determining the column count

    - #### isAutoIncrement

          public boolean isAutoIncrement​(int columnIndex)
                                  throws SQLException

      Retrieves whether a value stored in the designated column is automatically numbered, and thus readonly.
      Specified by:
        `isAutoIncrement` in interface `ResultSetMetaData`
      Parameters:
        `columnIndex` - the first column is 1, the second is 2, and so on; must be between `1` and the number of columns, inclusive
      Returns:
        `true` if the column is automatically numbered; `false` otherwise
      Throws:
        `SQLException` - if a database access error occurs or the given column number is out of bounds

    - #### isCaseSensitive

          public boolean isCaseSensitive​(int columnIndex)
                                  throws SQLException

      Indicates whether the case of the designated column's name matters.
      Specified by:
        `isCaseSensitive` in interface `ResultSetMetaData`
      Parameters:
        `columnIndex` - the first column is 1, the second is 2, and so on; must be between `1` and the number of columns, inclusive
      Returns:
        `true` if the column name is case sensitive; `false` otherwise
      Throws:
        `SQLException` - if a database access error occurs or the given column number is out of bounds

    - #### isSearchable

          public boolean isSearchable​(int columnIndex)
                               throws SQLException

      Indicates whether a value stored in the designated column can be used in a `WHERE` clause.
      Specified by:
        `isSearchable` in interface `ResultSetMetaData`
      Parameters:
        `columnIndex` - the first column is 1, the second is 2, and so on; must be between `1` and the number of columns, inclusive
      Returns:
        `true` if a value in the designated column can be used in a `WHERE` clause; `false` otherwise
      Throws:
        `SQLException` - if a database access error occurs or the given column number is out of bounds

    - #### isCurrency

          public boolean isCurrency​(int columnIndex)
                             throws SQLException

      Indicates whether a value stored in the designated column is a cash value.
      Specified by:
        `isCurrency` in interface `ResultSetMetaData`
      Parameters:
        `columnIndex` - the first column is 1, the second is 2, and so on; must be between `1` and the number of columns, inclusive
      Returns:
        `true` if a value in the designated column is a cash value; `false` otherwise
      Throws:
        `SQLException` - if a database access error occurs or the given column number is out of bounds

    - #### isNullable

          public int isNullable​(int columnIndex)
                         throws SQLException

      Retrieves a constant indicating whether it is possible to store a `NULL` value in the designated column.
      Specified by:
        `isNullable` in interface `ResultSetMetaData`
      Parameters:
        `columnIndex` - the first column is 1, the second is 2, and so on; must be between `1` and the number of columns, inclusive
      Returns:
        a constant from the `ResultSetMetaData` interface; either `columnNoNulls`, `columnNullable`, or `columnNullableUnknown`
      Throws:
        `SQLException` - if a database access error occurs or the given column number is out of bounds

    - #### isSigned

          public boolean isSigned​(int columnIndex)
                           throws SQLException

      Indicates whether a value stored in the designated column is a signed number.
      Specified by:
        `isSigned` in interface `ResultSetMetaData`
      Parameters:
        `columnIndex` - the first column is 1, the second is 2, and so on; must be between `1` and the number of columns, inclusive
      Returns:
        `true` if a value in the designated column is a signed number; `false` otherwise
      Throws:
        `SQLException` - if a database access error occurs or the given column number is out of bounds

    - #### getColumnDisplaySize

          public int getColumnDisplaySize​(int columnIndex)
                                   throws SQLException

      Retrieves the normal maximum width in chars of the designated column.
      Specified by:
        `getColumnDisplaySize` in interface `ResultSetMetaData`
      Parameters:
        `columnIndex` - the first column is 1, the second is 2, and so on; must be between `1` and the number of columns, inclusive
      Returns:
        the maximum number of chars that can be displayed in the designated column
      Throws:
        `SQLException` - if a database access error occurs or the given column number is out of bounds

    - #### getColumnLabel

          public String getColumnLabel​(int columnIndex)
                                throws SQLException

      Retrieves the suggested column title for the designated column for use in printouts and displays.
      Specified by:
        `getColumnLabel` in interface `ResultSetMetaData`
      Parameters:
        `columnIndex` - the first column is 1, the second is 2, and so on; must be between `1` and the number of columns, inclusive
      Returns:
        the suggested column name to use in printouts and displays
      Throws:
        `SQLException` - if a database access error occurs or the given column number is out of bounds

    - #### getColumnName

          public String getColumnName​(int columnIndex)
                               throws SQLException

      Retrieves the name of the designated column.
      Specified by:
        `getColumnName` in interface `ResultSetMetaData`
      Parameters:
        `columnIndex` - the first column is 1, the second is 2, and so on; must be between `1` and the number of columns, inclusive
      Returns:
        the column name of the designated column
      Throws:
        `SQLException` - if a database access error occurs or the given column number is out of bounds

    - #### getSchemaName

          public String getSchemaName​(int columnIndex)
                               throws SQLException

      Retrieves the schema name of the table from which the value in the designated column was derived.
      Specified by:
        `getSchemaName` in interface `ResultSetMetaData`
      Parameters:
        `columnIndex` - the first column is 1, the second is 2, and so on; must be between `1` and the number of columns, inclusive
      Returns:
        the schema name or an empty `String` if no schema name is available
      Throws:
        `SQLException` - if a database access error occurs or the given column number is out of bounds

    - #### getPrecision

          public int getPrecision​(int columnIndex)
                           throws SQLException

      Retrieves the total number of digits for values stored in the designated column.
      Specified by:
        `getPrecision` in interface `ResultSetMetaData`
      Parameters:
        `columnIndex` - the first column is 1, the second is 2, and so on; must be between `1` and the number of columns, inclusive
      Returns:
        the precision for values stored in the designated column
      Throws:
        `SQLException` - if a database access error occurs or the given column number is out of bounds

    - #### getScale

          public int getScale​(int columnIndex)
                       throws SQLException

      Retrieves the number of digits to the right of the decimal point for values stored in the designated column.
      Specified by:
        `getScale` in interface `ResultSetMetaData`
      Parameters:
        `columnIndex` - the first column is 1, the second is 2, and so on; must be between `1` and the number of columns, inclusive
      Returns:
        the scale for values stored in the designated column
      Throws:
        `SQLException` - if a database access error occurs or the given column number is out of bounds

    - #### getTableName

          public String getTableName​(int columnIndex)
                              throws SQLException

      Retrieves the name of the table from which the value in the designated column was derived.
      Specified by:
        `getTableName` in interface `ResultSetMetaData`
      Parameters:
        `columnIndex` - the first column is 1, the second is 2, and so on; must be between `1` and the number of columns, inclusive
      Returns:
        the table name or an empty `String` if no table name is available
      Throws:
        `SQLException` - if a database access error occurs or the given column number is out of bounds

    - #### getCatalogName

          public String getCatalogName​(int columnIndex)
                                throws SQLException

      Retrieves the catalog name of the table from which the value in the designated column was derived.
      Specified by:
        `getCatalogName` in interface `ResultSetMetaData`
      Parameters:
        `columnIndex` - the first column is 1, the second is 2, and so on; must be between `1` and the number of columns, inclusive
      Returns:
        the catalog name of the column's table or an empty `String` if no catalog name is available
      Throws:
        `SQLException` - if a database access error occurs or the given column number is out of bounds

    - #### getColumnType

          public int getColumnType​(int columnIndex)
                            throws SQLException

      Retrieves the type code (one of the `java.sql.Types` constants) for the SQL type of the value stored in the designated column.
      Specified by:
        `getColumnType` in interface `ResultSetMetaData`
      Parameters:
        `columnIndex` - the first column is 1, the second is 2, and so on; must be between `1` and the number of columns, inclusive
      Returns:
        an `int` representing the SQL type of values stored in the designated column
      Throws:
        `SQLException` - if a database access error occurs or the given column number is out of bounds
      See Also:
        `Types`

    - #### getColumnTypeName

          public String getColumnTypeName​(int columnIndex)
                                   throws SQLException

      Retrieves the DBMS-specific type name for values stored in the designated column.
      Specified by:
        `getColumnTypeName` in interface `ResultSetMetaData`
      Parameters:
        `columnIndex` - the first column is 1, the second is 2, and so on; must be between `1` and the number of columns, inclusive
      Returns:
        the type name used by the data source
      Throws:
        `SQLException` - if a database access error occurs or the given column number is out of bounds

    - #### isReadOnly

          public boolean isReadOnly​(int columnIndex)
                             throws SQLException

      Indicates whether the designated column is definitely not writable, thus readonly.
      Specified by:
        `isReadOnly` in interface `ResultSetMetaData`
      Parameters:
        `columnIndex` - the first column is 1, the second is 2, and so on; must be between `1` and the number of columns, inclusive
      Returns:
        `true` if this `RowSet` object is read-Only and thus not updatable; `false` otherwise
      Throws:
        `SQLException` - if a database access error occurs or the given column number is out of bounds

    - #### isWritable

          public boolean isWritable​(int columnIndex)
                             throws SQLException

      Indicates whether it is possible for a write operation on the designated column to succeed. A return value of `true` means that a write operation may or may not succeed.
      Specified by:
        `isWritable` in interface `ResultSetMetaData`
      Parameters:
        `columnIndex` - the first column is 1, the second is 2, and so on; must be between `1` and the number of columns, inclusive
      Returns:
        `true` if a write operation on the designated column may will succeed; `false` otherwise
      Throws:
        `SQLException` - if a database access error occurs or the given column number is out of bounds

    - #### isDefinitelyWritable

          public boolean isDefinitelyWritable​(int columnIndex)
                                       throws SQLException

      Indicates whether a write operation on the designated column will definitely succeed.
      Specified by:
        `isDefinitelyWritable` in interface `ResultSetMetaData`
      Parameters:
        `columnIndex` - the first column is 1, the second is 2, and so on; must be between `1` and the number of columns, inclusive
      Returns:
        `true` if a write operation on the designated column will definitely succeed; `false` otherwise
      Throws:
        `SQLException` - if a database access error occurs or the given column number is out of bounds

    - #### getColumnClassName

          public String getColumnClassName​(int columnIndex)
                                    throws SQLException

      Retrieves the fully-qualified name of the class in the Java programming language to which a value in the designated column will be mapped. For example, if the value is an `int`, the class name returned by this method will be `java.lang.Integer`.

      If the value in the designated column has a custom mapping, this method returns the name of the class that implements `SQLData`. When the method `ResultSet.getObject` is called to retrieve a value from the designated column, it will create an instance of this class or one of its subclasses.

      Specified by:
        `getColumnClassName` in interface `ResultSetMetaData`
      Parameters:
        `columnIndex` - the first column is 1, the second is 2, and so on; must be between `1` and the number of columns, inclusive
      Returns:
        the fully-qualified name of the class in the Java programming language that would be used by the method `RowSet.getObject` to retrieve the value in the specified column. This is the class name used for custom mapping when there is a custom mapping.
      Throws:
        `SQLException` - if a database access error occurs or the given column number is out of bounds

    - #### unwrap

          public <T> T unwrap​(Class<T> iface)
                       throws SQLException

      Returns an object that implements the given interface to allow access to non-standard methods, or standard methods not exposed by the proxy. The result may be either the object found to implement the interface or a proxy for that object. If the receiver implements the interface then that is the object. If the receiver is a wrapper and the wrapped object implements the interface then that is the object. Otherwise the object is the result of calling `unwrap` recursively on the wrapped object. If the receiver is not a wrapper and does not implement the interface, then an `SQLException` is thrown.
      Specified by:
        `unwrap` in interface `Wrapper`
      Type Parameters:
        `T` - the type of the class modeled by this Class object
      Parameters:
        `iface` - A Class defining an interface that the result must implement.
      Returns:
        an object that implements the interface. May be a proxy for the actual implementing object.
      Throws:
        `SQLException` - If no object found that implements the interface
      Since:
        1.6

    - #### isWrapperFor

          public boolean isWrapperFor​(Class<?> interfaces)
                               throws SQLException

      Returns true if this either implements the interface argument or is directly or indirectly a wrapper for an object that does. Returns false otherwise. If this implements the interface then return true, else if this is a wrapper then return the result of recursively calling `isWrapperFor` on the wrapped object. If this does not implement the interface and is not a wrapper, return false. This method should be implemented as a low-cost operation compared to `unwrap` so that callers can use this method to avoid expensive `unwrap` calls that may fail. If this method returns true then calling `unwrap` with the same argument should succeed.
      Specified by:
        `isWrapperFor` in interface `Wrapper`
      Parameters:
        `interfaces` - a Class defining an interface.
      Returns:
        true if this implements the interface or directly or indirectly wraps an object that does.
      Throws:
        `SQLException` - if an error occurs while determining whether this is a wrapper for an object with the given interface.
      Since:
        1.6