org.firebirdsql.jdbc

## Class FBParameterMetaData

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

- All Implemented Interfaces:
    java.sql.ParameterMetaData, java.sql.Wrapper, FirebirdParameterMetaData

      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.
  Version:
    1.0
  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 and Description
    --- | ---
    `protected` | `FBParameterMetaData(RowDescriptor rowDescriptor, FBConnection connection)` Creates a new `FBParameterMetaData` instance.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected java.util.Map<AbstractFieldMetaData.FieldKey,AbstractFieldMetaData.ExtendedFieldInfo>` | `getExtendedFieldInfo(FBConnection connection)` This method retrieves extended information from the system tables in a database.
    `java.lang.String` | `getParameterClassName(int parameter)` Retrieves the fully-qualified name of the Java class whose instances should be passed to the method `PreparedStatement.setObject`.
    `int` | `getParameterCount()` Retrieves the number of parameters in the `PreparedStatement` object for which this `ParameterMetaData` object contains information.
    `int` | `getParameterMode(int parameter)` Retrieves the designated parameter's mode.
    `int` | `getParameterType(int parameter)` Retrieves the designated parameter's SQL type.
    `java.lang.String` | `getParameterTypeName(int parameter)` Retrieves the designated parameter's database-specific type name.
    `int` | `getPrecision(int parameter)` Retrieves the designated parameter's specified column size.
    `int` | `getScale(int parameter)` Retrieves the designated parameter's number of digits to right of the decimal point.
    `int` | `isNullable(int parameter)` Retrieves whether null values are allowed in the designated parameter.
    `boolean` | `isSigned(int parameter)` Retrieves whether values for the designated parameter can be signed numbers.

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

    - #### FBParameterMetaData

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

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

  - ### Method Detail

    - #### getParameterCount

          public int getParameterCount()
                                throws java.sql.SQLException

      Retrieves the number of parameters in the `PreparedStatement` object for which this `ParameterMetaData` object contains information.
      Specified by:
        `getParameterCount` in interface `java.sql.ParameterMetaData`
      Returns:
        the number of parameters
      Throws:
        `java.sql.SQLException` - if a database access error occurs

    - #### isNullable

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

      Retrieves whether null values are allowed in the designated parameter.
      Specified by:
        `isNullable` in interface `java.sql.ParameterMetaData`
      Parameters:
        `parameter` - the first parameter is 1, the second is 2, ...
      Returns:
        the nullability status of the given parameter; one of `ParameterMetaData.parameterNoNulls`, `ParameterMetaData.parameterNullable`, or `ParameterMetaData.parameterNullableUnknown`
      Throws:
        `java.sql.SQLException` - if a database access error occurs

    - #### isSigned

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

      Retrieves whether values for the designated parameter can be signed numbers.
      Specified by:
        `isSigned` in interface `java.sql.ParameterMetaData`
      Parameters:
        `parameter` - the first parameter is 1, the second is 2, ...
      Returns:
        `true` if so; `false` otherwise
      Throws:
        `java.sql.SQLException` - if a database access error occurs

    - #### getPrecision

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

      Retrieves the designated parameter's specified column size.

      The returned value represents the maximum column size for the given parameter. 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` 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 `java.sql.ParameterMetaData`
      Parameters:
        `parameter` - the first parameter is 1, the second is 2, ...
      Returns:
        precision
      Throws:
        `java.sql.SQLException` - if a database access error occurs

    - #### getScale

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

      Retrieves the designated parameter'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.ParameterMetaData`
      Parameters:
        `parameter` - the first parameter is 1, the second is 2, ...
      Returns:
        scale
      Throws:
        `java.sql.SQLException` - if a database access error occurs

    - #### getParameterType

          public int getParameterType(int parameter)
                               throws java.sql.SQLException

      Retrieves the designated parameter's SQL type.
      Specified by:
        `getParameterType` in interface `java.sql.ParameterMetaData`
      Parameters:
        `parameter` - the first parameter 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`

    - #### getParameterTypeName

          public java.lang.String getParameterTypeName(int parameter)
                                                throws java.sql.SQLException

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

    - #### getParameterClassName

          public java.lang.String getParameterClassName(int parameter)
                                                 throws java.sql.SQLException

      Retrieves the fully-qualified name of the Java class whose instances should be passed to the method `PreparedStatement.setObject`.
      Specified by:
        `getParameterClassName` in interface `java.sql.ParameterMetaData`
      Parameters:
        `parameter` - the first parameter 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 `PreparedStatement.setObject` to set the value in the specified parameter. This is the class name used for custom mapping.
      Throws:
        `java.sql.SQLException` - if a database access error occurs

    - #### getParameterMode

          public int getParameterMode(int parameter)
                               throws java.sql.SQLException

      Retrieves the designated parameter's mode.
      Specified by:
        `getParameterMode` in interface `java.sql.ParameterMetaData`
      Parameters:
        `parameter` - the first parameter is 1, the second is 2, ...
      Returns:
        mode of the parameter; one of `ParameterMetaData.parameterModeIn`, `ParameterMetaData.parameterModeOut`, or `ParameterMetaData.parameterModeInOut` `ParameterMetaData.parameterModeUnknown`.
      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

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

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