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.