Module org.firebirdsql.jaybird
Package org.firebirdsql.jdbc

# Class FBParameterMetaData

java.lang.Object
org.firebirdsql.jdbc.AbstractFieldMetaData
org.firebirdsql.jdbc.FBParameterMetaData

All Implemented Interfaces:
  `ParameterMetaData`, `Wrapper`, `FirebirdParameterMetaData`

@InternalApi public class FBParameterMetaData extends AbstractFieldMetaData implements FirebirdParameterMetaData
An object that can be used to get information about the types and properties for each parameter marker in a `PreparedStatement` object.

This class is internal API of Jaybird. Future versions may radically change, move, or make inaccessible this type. For the public API, refer to the `ParameterMetaData` and `FirebirdParameterMetaData` interfaces.

Author:
  Nickolay Samofatov, 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.ParameterMetaData

  `parameterModeIn, parameterModeInOut, parameterModeOut, parameterModeUnknown, parameterNoNulls, parameterNullable, parameterNullableUnknown`

- ## Constructor Summary

  Constructors
  Modifier
  Constructor
  Description
  `protected`
  `FBParameterMetaData(RowDescriptor rowDescriptor, FBConnection connection)`
  Creates a new `FBParameterMetaData` instance.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `protected Map<AbstractFieldMetaData.FieldKey,AbstractFieldMetaData.ExtendedFieldInfo>`
  `getExtendedFieldInfo(FBConnection connection)`
  This method retrieves extended information from the system tables in a database.
  `String`
  `getParameterClassName(int parameter)`
  `int`
  `getParameterCount()`
  `int`
  `getParameterMode(int parameter)`
  `int`
  `getParameterType(int parameter)`
  `String`
  `getParameterTypeName(int parameter)`
  `int`
  `getPrecision(int parameter)`
  `int`
  `getScale(int parameter)`
  `int`
  `isNullable(int parameter)`
  `boolean`
  `isSigned(int parameter)`

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

  - ### FBParameterMetaData

    protected FBParameterMetaData(RowDescriptor rowDescriptor, FBConnection connection) throws SQLException
    Creates a new `FBParameterMetaData` instance.
    Parameters:
      `rowDescriptor` - a row descriptor
      `connection` - a `FBConnection` value
    Throws:
      `SQLException` - if an error occurs

- ## Method Details

  - ### getParameterCount

    public int getParameterCount() throws SQLException
    Specified by:
      `getParameterCount` in interface `ParameterMetaData`
    Throws:
      `SQLException`

  - ### isNullable

    public int isNullable(int parameter) throws SQLException
    Specified by:
      `isNullable` in interface `ParameterMetaData`
    Throws:
      `SQLException`

  - ### isSigned

    public boolean isSigned(int parameter) throws SQLException
    Specified by:
      `isSigned` in interface `ParameterMetaData`
    Throws:
      `SQLException`

  - ### getPrecision

    public int getPrecision(int parameter) throws SQLException

    NOTE For `NUMERIC` and `DECIMAL` the reported precision is the maximum precision allowed by the underlying storage data type, it is not the declared precision.

    Specified by:
      `getPrecision` in interface `ParameterMetaData`
    Throws:
      `SQLException`

  - ### getScale

    public int getScale(int parameter) throws SQLException
    Specified by:
      `getScale` in interface `ParameterMetaData`
    Throws:
      `SQLException`

  - ### getParameterType

    public int getParameterType(int parameter) throws SQLException
    Specified by:
      `getParameterType` in interface `ParameterMetaData`
    Throws:
      `SQLException`

  - ### getParameterTypeName

    public String getParameterTypeName(int parameter) throws SQLException
    Specified by:
      `getParameterTypeName` in interface `ParameterMetaData`
    Throws:
      `SQLException`

  - ### getParameterClassName

    public String getParameterClassName(int parameter) throws SQLException
    Specified by:
      `getParameterClassName` in interface `ParameterMetaData`
    Throws:
      `SQLException`

  - ### getParameterMode

    public int getParameterMode(int parameter) throws SQLException
    Specified by:
      `getParameterMode` in interface `ParameterMetaData`
    Throws:
      `SQLException`

  - ### getExtendedFieldInfo

    protected Map<AbstractFieldMetaData.FieldKey,AbstractFieldMetaData.ExtendedFieldInfo> getExtendedFieldInfo(FBConnection connection) throws SQLException
    This method retrieves extended information from the system tables in a database. Since this method is expensive, use it with care.

    `FBParameterMetaData` does not support extended field info, so it always returns an empty Map.

    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:
      `SQLException` - if a database error occurs while obtaining extended field information.