org.firebirdsql.jdbc

## Class FBResultSetMetaData

- java.lang.Object
- - org.firebirdsql.jdbc.AbstractFieldMetaData
  - - org.firebirdsql.jdbc.FBResultSetMetaData

- All Implemented Interfaces:
    java.sql.ResultSetMetaData, java.sql.Wrapper, FirebirdResultSetMetaData

      public class FBResultSetMetaData
      extends AbstractFieldMetaData
      implements FirebirdResultSetMetaData

  An object that can be used to get information about the types and properties of the columns in a `ResultSet` object.
  Author:
    David Jencks, Mark Rotteveel

- - ### Nested Class Summary

    - ### Nested classes/interfaces inherited from class org.firebirdsql.jdbc.AbstractFieldMetaData

      `AbstractFieldMetaData.ExtendedFieldInfo, AbstractFieldMetaData.FieldKey`

  - ### Field Summary

    - ### Fields inherited from interface java.sql.ResultSetMetaData

      `columnNoNulls, columnNullable, columnNullableUnknown`

  - ### Constructor Summary

    Constructors
    Modifier | Constructor and Description
    --- | ---
    `protected` | `FBResultSetMetaData(RowDescriptor rowDescriptor, FBConnection connection)` Creates a new `FBResultSetMetaData` instance.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `java.lang.String` | `getCatalogName(int column)` Gets the designated column's table's catalog name.
    `java.lang.String` | `getColumnClassName(int column)` Returns the fully-qualified name of the Java class whose instances are manufactured if the method `ResultSet.getObject` is called to retrieve a value from the column.
    `int` | `getColumnCount()` Returns the number of columns in this `ResultSet` object.
    `int` | `getColumnDisplaySize(int column)` Indicates the designated column's normal maximum width in characters.
    `java.lang.String` | `getColumnLabel(int column)` Gets the designated column's suggested title for use in printouts and displays.
    `java.lang.String` | `getColumnName(int column)` Get the designated column's name.
    `int` | `getColumnType(int column)` Retrieves the designated column's SQL type.
    `java.lang.String` | `getColumnTypeName(int column)` Retrieves the designated column's database-specific type name.
    `protected java.util.Map<AbstractFieldMetaData.FieldKey,AbstractFieldMetaData.ExtendedFieldInfo>` | `getExtendedFieldInfo(FBConnection connection)` This method retrieves extended information from the system tables in a database.
    `int` | `getPrecision(int column)` Get the designated column's specified column size.
    `int` | `getScale(int column)` Gets the designated column's number of digits to right of the decimal point.
    `java.lang.String` | `getSchemaName(int column)` Get the designated column's table's schema.
    `java.lang.String` | `getTableAlias(int column)` Gets the designated column's table alias.
    `java.lang.String` | `getTableName(int column)` Gets the designated column's table name.
    `boolean` | `isAutoIncrement(int column)` Indicates whether the designated column is automatically numbered.
    `boolean` | `isCaseSensitive(int column)` Indicates whether a column's case matters.
    `boolean` | `isCurrency(int column)` Indicates whether the designated column is a cash value.
    `boolean` | `isDefinitelyWritable(int column)` Indicates whether a write on the designated column will definitely succeed.
    `int` | `isNullable(int column)` Indicates the nullability of values in the designated column.
    `boolean` | `isReadOnly(int column)` Indicates whether the designated column is definitely not writable.
    `boolean` | `isSearchable(int column)` Indicates whether the designated column can be used in a where clause.
    `boolean` | `isSigned(int column)` Indicates whether values in the designated column are signed numbers.
    `boolean` | `isWritable(int column)` Indicates whether it is possible for a write on the designated column to succeed.

    - ### Methods inherited from class org.firebirdsql.jdbc.AbstractFieldMetaData

      `estimateFixedPrecision, getExtFieldInfo, getFieldClassName, getFieldCount, getFieldDescriptor, getFieldType, getFieldTypeName, getPrecisionInternal, getRowDescriptor, getScaleInternal, isSignedInternal, isWrapperFor, unwrap`

    - ### Methods inherited from class java.lang.Object

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

    - ### Methods inherited from interface java.sql.Wrapper

      `isWrapperFor, unwrap`

- - ### Constructor Detail

    - #### FBResultSetMetaData

          protected FBResultSetMetaData(RowDescriptor rowDescriptor,
                                        FBConnection connection)
                                 throws java.sql.SQLException

      Creates a new `FBResultSetMetaData` instance.
      Parameters:
        `rowDescriptor` - a row descriptor
        `connection` - a `FBConnection` value
      Throws:
        `java.sql.SQLException` - if an error occurs

        TODO Need another constructor for metadata from constructed result set, where we supply the ext field info.

  - ### Method Detail

    - #### getColumnCount

          public int getColumnCount()
                             throws java.sql.SQLException

      Returns the number of columns in this `ResultSet` object.
      Specified by:
        `getColumnCount` in interface `java.sql.ResultSetMetaData`
      Returns:
        the number of columns
      Throws:
        `java.sql.SQLException` - if a database access error occurs

    - #### isAutoIncrement

          public boolean isAutoIncrement(int column)
                                  throws java.sql.SQLException

      Indicates whether the designated column is automatically numbered.

      The current implementation always returns `false`.

      Specified by:
        `isAutoIncrement` in interface `java.sql.ResultSetMetaData`
      Parameters:
        `column` - the first column is 1, the second is 2, ...
      Returns:
        `true` if so; `false` otherwise
      Throws:
        `java.sql.SQLException` - if a database access error occurs

    - #### isCaseSensitive

          public boolean isCaseSensitive(int column)
                                  throws java.sql.SQLException

      Indicates whether a column's case matters.

      The current implementation always returns `true`.

      Specified by:
        `isCaseSensitive` in interface `java.sql.ResultSetMetaData`
      Parameters:
        `column` - the first column is 1, the second is 2, ...
      Returns:
        `true` if so; `false` otherwise
      Throws:
        `java.sql.SQLException` - if a database access error occurs

    - #### isSearchable

          public boolean isSearchable(int column)
                               throws java.sql.SQLException

      Indicates whether the designated column can be used in a where clause.
      Specified by:
        `isSearchable` in interface `java.sql.ResultSetMetaData`
      Parameters:
        `column` - the first column is 1, the second is 2, ...
      Returns:
        `true` if so; `false` otherwise
      Throws:
        `java.sql.SQLException` - if a database access error occurs

    - #### isCurrency

          public boolean isCurrency(int column)
                             throws java.sql.SQLException

      Indicates whether the designated column is a cash value.
      Specified by:
        `isCurrency` in interface `java.sql.ResultSetMetaData`
      Parameters:
        `column` - the first column is 1, the second is 2, ...
      Returns:
        `true` if so; `false` otherwise
      Throws:
        `java.sql.SQLException` - if a database access error occurs

    - #### isNullable

          public int isNullable(int column)
                         throws java.sql.SQLException

      Indicates the nullability of values in the designated column.
      Specified by:
        `isNullable` in interface `java.sql.ResultSetMetaData`
      Parameters:
        `column` - the first column is 1, the second is 2, ...
      Returns:
        the nullability status of the given column; one of `columnNoNulls`, `columnNullable` or `columnNullableUnknown`
      Throws:
        `java.sql.SQLException` - if a database access error occurs

    - #### isSigned

          public boolean isSigned(int column)
                           throws java.sql.SQLException

      Indicates whether values in the designated column are signed numbers.
      Specified by:
        `isSigned` in interface `java.sql.ResultSetMetaData`
      Parameters:
        `column` - the first column is 1, the second is 2, ...
      Returns:
        `true` if so; `false` otherwise
      Throws:
        `java.sql.SQLException` - if a database access error occurs

    - #### getColumnDisplaySize

          public int getColumnDisplaySize(int column)
                                   throws java.sql.SQLException

      Indicates the designated column's normal maximum width in characters.
      Specified by:
        `getColumnDisplaySize` in interface `java.sql.ResultSetMetaData`
      Parameters:
        `column` - the first column is 1, the second is 2, ...
      Returns:
        the normal maximum number of characters allowed as the width of the designated column
      Throws:
        `java.sql.SQLException` - if a database access error occurs

    - #### getColumnLabel

          public java.lang.String getColumnLabel(int column)
                                          throws java.sql.SQLException

      Gets the designated column's suggested title for use in printouts and displays. The suggested title is usually specified by the SQL `AS` clause. If a SQL `AS` is not specified, the value returned from `getColumnLabel` will be the same as the value returned by the `getColumnName` method.
      Specified by:
        `getColumnLabel` in interface `java.sql.ResultSetMetaData`
      Parameters:
        `column` - the first column is 1, the second is 2, ...
      Returns:
        the suggested column title
      Throws:
        `java.sql.SQLException` - if a database access error occurs

    - #### getColumnName

          public java.lang.String getColumnName(int column)
                                         throws java.sql.SQLException

      Get the designated column's name.
      Specified by:
        `getColumnName` in interface `java.sql.ResultSetMetaData`
      Parameters:
        `column` - the first column is 1, the second is 2, ...
      Returns:
        column name
      Throws:
        `java.sql.SQLException` - if a database access error occurs

    - #### getSchemaName

          public java.lang.String getSchemaName(int column)
                                         throws java.sql.SQLException

      Get the designated column's table's schema.

      Firebird has no schemas. This method always returns the empty string.

      Specified by:
        `getSchemaName` in interface `java.sql.ResultSetMetaData`
      Parameters:
        `column` - the first column is 1, the second is 2, ...
      Returns:
        schema name or "" if not applicable
      Throws:
        `java.sql.SQLException` - if a database access error occurs

    - #### getPrecision

          public int getPrecision(int column)
                           throws java.sql.SQLException

      Get the designated column's specified column size.

      For numeric data, this is the maximum precision. For character data, this is the length in characters. For datetime datatypes, this is the length in characters of the String representation (assuming the maximum allowed precision of the fractional seconds component). For binary data, this is the length in bytes. For the ROWID datatype, this is the length in bytes. 0 is returned for data types where the column size is not applicable.

      NOTE For `NUMERIC` and `DECIMAL` we attempt to retrieve the exact precision from the metadata, if this is not possible (eg the column is dynamically defined in the query), the reported precision is the maximum precision allowed by the underlying storage data type.

      Specified by:
        `getPrecision` in interface `java.sql.ResultSetMetaData`
      Parameters:
        `column` - the first column is 1, the second is 2, ...
      Returns:
        precision
      Throws:
        `java.sql.SQLException` - if a database access error occurs

    - #### getScale

          public int getScale(int column)
                       throws java.sql.SQLException

      Gets the designated column's number of digits to right of the decimal point. 0 is returned for data types where the scale is not applicable.
      Specified by:
        `getScale` in interface `java.sql.ResultSetMetaData`
      Parameters:
        `column` - the first column is 1, the second is 2, ...
      Returns:
        scale
      Throws:
        `java.sql.SQLException` - if a database access error occurs

    - #### getTableName

          public java.lang.String getTableName(int column)
                                        throws java.sql.SQLException

      Gets the designated column's table name.
      Specified by:
        `getTableName` in interface `java.sql.ResultSetMetaData`
      Parameters:
        `column` - the first column is 1, the second is 2, ...
      Returns:
        table name or "" if not applicable
      Throws:
        `java.sql.SQLException` - if a database access error occurs

    - #### getTableAlias

          public java.lang.String getTableAlias(int column)
                                         throws java.sql.SQLException

      Description copied from interface: `FirebirdResultSetMetaData`
      Gets the designated column's table alias.
      Specified by:
        `getTableAlias` in interface `FirebirdResultSetMetaData`
      Parameters:
        `column` - the first column is 1, the second is 2, ...
      Returns:
        table alias or "" if not applicable
      Throws:
        `java.sql.SQLException` - if a database access error occurs

    - #### getCatalogName

          public java.lang.String getCatalogName(int column)
                                          throws java.sql.SQLException

      Gets the designated column's table's catalog name.

      Firebird has no catalogs. This method always returns the empty string.

      Specified by:
        `getCatalogName` in interface `java.sql.ResultSetMetaData`
      Parameters:
        `column` - the first column is 1, the second is 2, ...
      Returns:
        the name of the catalog for the table in which the given column appears or "" if not applicable
      Throws:
        `java.sql.SQLException` - if a database access error occurs

    - #### getColumnType

          public int getColumnType(int column)
                            throws java.sql.SQLException

      Retrieves the designated column's SQL type.
      Specified by:
        `getColumnType` in interface `java.sql.ResultSetMetaData`
      Parameters:
        `column` - the first column is 1, the second is 2, ...
      Returns:
        SQL type from java.sql.Types
      Throws:
        `java.sql.SQLException` - if a database access error occurs
      See Also:
        `Types`

    - #### getColumnTypeName

          public java.lang.String getColumnTypeName(int column)
                                             throws java.sql.SQLException

      Retrieves the designated column's database-specific type name.
      Specified by:
        `getColumnTypeName` in interface `java.sql.ResultSetMetaData`
      Parameters:
        `column` - the first column is 1, the second is 2, ...
      Returns:
        type name used by the database. If the column type is a user-defined type, then a fully-qualified type name is returned.
      Throws:
        `java.sql.SQLException` - if a database access error occurs

    - #### isReadOnly

          public boolean isReadOnly(int column)
                             throws java.sql.SQLException

      Indicates whether the designated column is definitely not writable.

      The current implementation always returns `false`.

      Specified by:
        `isReadOnly` in interface `java.sql.ResultSetMetaData`
      Parameters:
        `column` - the first column is 1, the second is 2, ...
      Returns:
        `true` if so; `false` otherwise
      Throws:
        `java.sql.SQLException` - if a database access error occurs

    - #### isWritable

          public boolean isWritable(int column)
                             throws java.sql.SQLException

      Indicates whether it is possible for a write on the designated column to succeed.

      The current implementation always returns `true`.

      Specified by:
        `isWritable` in interface `java.sql.ResultSetMetaData`
      Parameters:
        `column` - the first column is 1, the second is 2, ...
      Returns:
        `true` if so; `false` otherwise
      Throws:
        `java.sql.SQLException` - if a database access error occurs

    - #### isDefinitelyWritable

          public boolean isDefinitelyWritable(int column)
                                       throws java.sql.SQLException

      Indicates whether a write on the designated column will definitely succeed.

      The current implementation always returns `true`.

      Specified by:
        `isDefinitelyWritable` in interface `java.sql.ResultSetMetaData`
      Parameters:
        `column` - the first column is 1, the second is 2, ...
      Returns:
        `true` if so; `false` otherwise
      Throws:
        `java.sql.SQLException` - if a database access error occurs

    - #### getColumnClassName

          public java.lang.String getColumnClassName(int column)
                                              throws java.sql.SQLException

      Returns the fully-qualified name of the Java class whose instances are manufactured if the method `ResultSet.getObject` is called to retrieve a value from the column.

      `ResultSet.getObject` may return a subclass of the class returned by this method.

      Specified by:
        `getColumnClassName` in interface `java.sql.ResultSetMetaData`
      Parameters:
        `column` - the first column is 1, the second is 2, ...
      Returns:
        the fully-qualified name of the class in the Java programming language that would be used by the method `ResultSet.getObject` to retrieve the value in the specified column. This is the class name used for custom mapping.
      Throws:
        `java.sql.SQLException` - if a database access error occurs

    - #### getExtendedFieldInfo

          protected java.util.Map<AbstractFieldMetaData.FieldKey,AbstractFieldMetaData.ExtendedFieldInfo> getExtendedFieldInfo(FBConnection connection)
                                                                                                                        throws java.sql.SQLException

      Description copied from class: `AbstractFieldMetaData`
      This method retrieves extended information from the system tables in a database. Since this method is expensive, use it with care.
      Specified by:
        `getExtendedFieldInfo` in class `AbstractFieldMetaData`
      Returns:
        mapping between `AbstractFieldMetaData.FieldKey` instances and `AbstractFieldMetaData.ExtendedFieldInfo` instances, or an empty Map if the metadata implementation does not support extended info.
      Throws:
        `java.sql.SQLException` - if a database error occurs while obtaining extended field information.

Copyright © 2001-2021 Jaybird (Firebird JDBC/JCA) team. All rights reserved.