RowSetMetaDataImpl (Java SE 15 & JDK 15)
Description: declaration: module: java.sql.rowset, package: javax.sql.rowset, class: RowSetMetaDataImpl
Keywords: javax.sql.rowset.RowSetMetaDataImpl class

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

  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 Details

  - ### RowSetMetaDataImpl

    public RowSetMetaDataImpl()

- ## Method Details

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