Package org.firebirdsql.jdbc.field

## Class FBField

- java.lang.Object
- - org.firebirdsql.jdbc.field.FBField

- Direct Known Subclasses:
    `FBLongVarCharField`, `FBWorkaroundStringField`

      public abstract class FBField
      extends java.lang.Object

  Describe class `FBField` here.
  Author:
    Roman Rokytskyy, Mark Rotteveel

- - ### Field Summary

    Fields
    Modifier and Type | Field | Description
    --- | --- | ---
    `protected FieldDescriptor` | `fieldDescriptor` |
    `protected GDSHelper` | `gdsHelper` |
    `protected int` | `requiredType` |
    `protected int` | `scale` |

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `void` | `close()` | Close this field.
    `static FBField` | `createField​(FieldDescriptor fieldDescriptor, FieldDataProvider dataProvider, GDSHelper gdsHelper, boolean cached)` | This is a factory method that creates appropriate instance of the `FBField` class according to the SQL datatype.
    `java.lang.String` | `getAlias()` | Returns the alias of the column as declared in XSQLVAR.
    `java.sql.Array` | `getArray()` |
    `java.math.BigDecimal` | `getBigDecimal()` |
    `java.math.BigDecimal` | `getBigDecimal​(int scale)` |
    `java.math.BigInteger` | `getBigInteger()` |
    `java.io.InputStream` | `getBinaryStream()` |
    `java.sql.Blob` | `getBlob()` |
    `boolean` | `getBoolean()` |
    `byte` | `getByte()` |
    `byte[]` | `getBytes()` |
    `java.io.Reader` | `getCharacterStream()` |
    `java.sql.Clob` | `getClob()` |
    `protected DatatypeCoder` | `getDatatypeCoder()` |
    `java.sql.Date` | `getDate()` |
    `java.sql.Date` | `getDate​(java.util.Calendar cal)` |
    `Decimal<?>` | `getDecimal()` | Returns the value as a Decimal type.
    `<D extends Decimal<D>> D` | `getDecimal​(java.lang.Class<D> targetType)` |
    `double` | `getDouble()` |
    `protected byte[]` | `getFieldData()` |
    `float` | `getFloat()` |
    `int` | `getInt()` |
    `long` | `getLong()` |
    `java.lang.String` | `getName()` | Returns the name of the column as declared in the XSQLVAR.
    `java.lang.Object` | `getObject()` |
    `<T> T` | `getObject​(java.lang.Class<T> type)` |
    `java.lang.Object` | `getObject​(java.util.Map<java.lang.String,​java.lang.Class<?>> map)` |
    `protected org.firebirdsql.jdbc.field.ObjectConverter` | `getObjectConverter()` |
    `DatatypeCoder.RawDateTimeStruct` | `getRawDateTimeStruct()` |
    `java.sql.Ref` | `getRef()` |
    `java.lang.String` | `getRelationName()` | Returns the relation to which belongs column as declared in XSQLVAR.
    `java.sql.RowId` | `getRowId()` |
    `short` | `getShort()` |
    `java.lang.String` | `getString()` |
    `java.sql.Time` | `getTime()` |
    `java.sql.Time` | `getTime​(java.util.Calendar cal)` |
    `java.sql.Timestamp` | `getTimestamp()` |
    `java.sql.Timestamp` | `getTimestamp​(java.util.Calendar cal)` |
    `protected boolean` | `isInvertTimeZone()` |
    `boolean` | `isNull()` |
    `static boolean` | `isType​(FieldDescriptor field, int jdbcType)` | Deprecated. This method will be removed in Jaybird 5, as a replacement use `JdbcTypeConverter.isJdbcType(FieldDescriptor, int)`
    `void` | `setBigDecimal​(java.math.BigDecimal value)` |
    `void` | `setBigInteger​(java.math.BigInteger value)` |
    `void` | `setBinaryStream​(java.io.InputStream in)` |
    `void` | `setBinaryStream​(java.io.InputStream in, int length)` |
    `void` | `setBinaryStream​(java.io.InputStream in, long length)` |
    `protected void` | `setBinaryStreamInternal​(java.io.InputStream in, long length)` |
    `void` | `setBlob​(FBBlob blob)` |
    `void` | `setBoolean​(boolean value)` |
    `void` | `setByte​(byte value)` |
    `void` | `setBytes​(byte[] value)` |
    `void` | `setCharacterStream​(java.io.Reader in)` |
    `void` | `setCharacterStream​(java.io.Reader in, int length)` |
    `void` | `setCharacterStream​(java.io.Reader in, long length)` |
    `protected void` | `setCharacterStreamInternal​(java.io.Reader in, long length)` |
    `void` | `setClob​(FBClob clob)` |
    `void` | `setConnection​(GDSHelper gdsHelper)` |
    `void` | `setDate​(java.sql.Date value)` |
    `void` | `setDate​(java.sql.Date value, java.util.Calendar cal)` |
    `void` | `setDecimal​(Decimal<?> decimal)` | Sets the value as a Decimal type.
    `void` | `setDouble​(double value)` |
    `protected void` | `setFieldData​(byte[] data)` |
    `void` | `setFloat​(float value)` |
    `void` | `setInteger​(int value)` |
    `void` | `setLong​(long value)` |
    `void` | `setNull()` |
    `void` | `setObject​(java.lang.Object value)` |
    `void` | `setRawDateTimeStruct​(DatatypeCoder.RawDateTimeStruct raw)` |
    `void` | `setRequiredType​(int requiredType)` | Set the required type for `getObject()` conversion.
    `void` | `setRowId​(java.sql.RowId rowId)` |
    `void` | `setShort​(short value)` |
    `void` | `setString​(java.lang.String value)` |
    `void` | `setTime​(java.sql.Time value)` |
    `void` | `setTime​(java.sql.Time value, java.util.Calendar cal)` |
    `void` | `setTimestamp​(java.sql.Timestamp value)` |
    `void` | `setTimestamp​(java.sql.Timestamp value, java.util.Calendar cal)` |

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

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

- - ### Field Detail

    - #### fieldDescriptor

          protected final FieldDescriptor fieldDescriptor

    - #### gdsHelper

          protected GDSHelper gdsHelper

    - #### requiredType

          protected int requiredType

    - #### scale

          protected int scale

  - ### Method Detail

    - #### getFieldData

          protected final byte[] getFieldData()

    - #### setFieldData

          protected final void setFieldData​(byte[] data)

    - #### getObjectConverter

          protected final org.firebirdsql.jdbc.field.ObjectConverter getObjectConverter()

    - #### getDatatypeCoder

          protected final DatatypeCoder getDatatypeCoder()

    - #### isNull

          public final boolean isNull()
                               throws java.sql.SQLException

      Returns:
        `true` if the corresponding field is `null`, otherwise `false`
      Throws:
        `java.sql.SQLException`

    - #### setNull

          public void setNull()

    - #### setConnection

          public void setConnection​(GDSHelper gdsHelper)

    - #### setRequiredType

          public void setRequiredType​(int requiredType)

      Set the required type for `getObject()` conversion.
      Parameters:
        `requiredType` - required type, one of the `Types` constants.

    - #### isType

          @Deprecated
          public static boolean isType​(FieldDescriptor field,
                                       int jdbcType)

      Deprecated.
      This method will be removed in Jaybird 5, as a replacement use `JdbcTypeConverter.isJdbcType(FieldDescriptor, int)`
      Returns:
        `true` if the field is of type `type`.

    - #### createField

          public static FBField createField​(FieldDescriptor fieldDescriptor,
                                            FieldDataProvider dataProvider,
                                            GDSHelper gdsHelper,
                                            boolean cached)
                                     throws java.sql.SQLException

      This is a factory method that creates appropriate instance of the `FBField` class according to the SQL datatype. This instance knows how to perform all necessary type conversions.
      Throws:
        `java.sql.SQLException`

    - #### getName

          public java.lang.String getName()

      Returns the name of the column as declared in the XSQLVAR.

    - #### getAlias

          public java.lang.String getAlias()

      Returns the alias of the column as declared in XSQLVAR.

    - #### getRelationName

          public java.lang.String getRelationName()

      Returns the relation to which belongs column as declared in XSQLVAR.

    - #### close

          public void close()
                     throws java.sql.SQLException

      Close this field. This method tells field implementation to release all resources allocated when field methods were called.
      Throws:
        `java.sql.SQLException` - if field cannot be closed.

    - #### getByte

          public byte getByte()
                       throws java.sql.SQLException

      Throws:
        `java.sql.SQLException`

    - #### getShort

          public short getShort()
                         throws java.sql.SQLException

      Throws:
        `java.sql.SQLException`

    - #### getInt

          public int getInt()
                     throws java.sql.SQLException

      Throws:
        `java.sql.SQLException`

    - #### getLong

          public long getLong()
                       throws java.sql.SQLException

      Throws:
        `java.sql.SQLException`

    - #### getFloat

          public float getFloat()
                         throws java.sql.SQLException

      Throws:
        `java.sql.SQLException`

    - #### getDouble

          public double getDouble()
                           throws java.sql.SQLException

      Throws:
        `java.sql.SQLException`

    - #### getBigDecimal

          public java.math.BigDecimal getBigDecimal()
                                             throws java.sql.SQLException

      Throws:
        `java.sql.SQLException`

    - #### getBigDecimal

          public java.math.BigDecimal getBigDecimal​(int scale)
                                             throws java.sql.SQLException

      Throws:
        `java.sql.SQLException`

    - #### getBoolean

          public boolean getBoolean()
                             throws java.sql.SQLException

      Throws:
        `java.sql.SQLException`

    - #### getString

          public java.lang.String getString()
                                     throws java.sql.SQLException

      Throws:
        `java.sql.SQLException`

    - #### getObject

          public java.lang.Object getObject()
                                     throws java.sql.SQLException

      Throws:
        `java.sql.SQLException`

    - #### getObject

          public java.lang.Object getObject​(java.util.Map<java.lang.String,​java.lang.Class<?>> map)
                                     throws java.sql.SQLException

      Throws:
        `java.sql.SQLException`

    - #### getObject

          public <T> T getObject​(java.lang.Class<T> type)
                          throws java.sql.SQLException

      Throws:
        `java.sql.SQLException`

    - #### getBinaryStream

          public java.io.InputStream getBinaryStream()
                                              throws java.sql.SQLException

      Throws:
        `java.sql.SQLException`

    - #### getCharacterStream

          public java.io.Reader getCharacterStream()
                                            throws java.sql.SQLException

      Throws:
        `java.sql.SQLException`

    - #### getBytes

          public byte[] getBytes()
                          throws java.sql.SQLException

      Throws:
        `java.sql.SQLException`

    - #### getBlob

          public java.sql.Blob getBlob()
                                throws java.sql.SQLException

      Throws:
        `java.sql.SQLException`

    - #### getDate

          public java.sql.Date getDate()
                                throws java.sql.SQLException

      Throws:
        `java.sql.SQLException`

    - #### getDate

          public java.sql.Date getDate​(java.util.Calendar cal)
                                throws java.sql.SQLException

      Throws:
        `java.sql.SQLException`

    - #### getTime

          public java.sql.Time getTime()
                                throws java.sql.SQLException

      Throws:
        `java.sql.SQLException`

    - #### getTime

          public java.sql.Time getTime​(java.util.Calendar cal)
                                throws java.sql.SQLException

      Throws:
        `java.sql.SQLException`

    - #### getTimestamp

          public java.sql.Timestamp getTimestamp()
                                          throws java.sql.SQLException

      Throws:
        `java.sql.SQLException`

    - #### getTimestamp

          public java.sql.Timestamp getTimestamp​(java.util.Calendar cal)
                                          throws java.sql.SQLException

      Throws:
        `java.sql.SQLException`

    - #### getRef

          public java.sql.Ref getRef()
                              throws java.sql.SQLException

      Throws:
        `java.sql.SQLException`

    - #### getClob

          public java.sql.Clob getClob()
                                throws java.sql.SQLException

      Throws:
        `java.sql.SQLException`

    - #### getArray

          public java.sql.Array getArray()
                                  throws java.sql.SQLException

      Throws:
        `java.sql.SQLException`

    - #### getBigInteger

          public java.math.BigInteger getBigInteger()
                                             throws java.sql.SQLException

      Throws:
        `java.sql.SQLException`

    - #### getRowId

          public java.sql.RowId getRowId()
                                  throws java.sql.SQLException

      Throws:
        `java.sql.SQLException`

    - #### setByte

          public void setByte​(byte value)
                       throws java.sql.SQLException

      Throws:
        `java.sql.SQLException`

    - #### setShort

          public void setShort​(short value)
                        throws java.sql.SQLException

      Throws:
        `java.sql.SQLException`

    - #### setInteger

          public void setInteger​(int value)
                          throws java.sql.SQLException

      Throws:
        `java.sql.SQLException`

    - #### setLong

          public void setLong​(long value)
                       throws java.sql.SQLException

      Throws:
        `java.sql.SQLException`

    - #### setFloat

          public void setFloat​(float value)
                        throws java.sql.SQLException

      Throws:
        `java.sql.SQLException`

    - #### setDouble

          public void setDouble​(double value)
                         throws java.sql.SQLException

      Throws:
        `java.sql.SQLException`

    - #### setBigDecimal

          public void setBigDecimal​(java.math.BigDecimal value)
                             throws java.sql.SQLException

      Throws:
        `java.sql.SQLException`

    - #### setBoolean

          public void setBoolean​(boolean value)
                          throws java.sql.SQLException

      Throws:
        `java.sql.SQLException`

    - #### setString

          public void setString​(java.lang.String value)
                         throws java.sql.SQLException

      Throws:
        `java.sql.SQLException`

    - #### setBigInteger

          public void setBigInteger​(java.math.BigInteger value)
                             throws java.sql.SQLException

      Throws:
        `java.sql.SQLException`

    - #### setObject

          public void setObject​(java.lang.Object value)
                         throws java.sql.SQLException

      Throws:
        `java.sql.SQLException`

    - #### setBinaryStreamInternal

          protected void setBinaryStreamInternal​(java.io.InputStream in,
                                                 long length)
                                          throws java.sql.SQLException

      Throws:
        `java.sql.SQLException`

    - #### setBinaryStream

          public final void setBinaryStream​(java.io.InputStream in,
                                            long length)
                                     throws java.sql.SQLException

      Throws:
        `java.sql.SQLException`

    - #### setBinaryStream

          public final void setBinaryStream​(java.io.InputStream in)
                                     throws java.sql.SQLException

      Throws:
        `java.sql.SQLException`

    - #### setBinaryStream

          public final void setBinaryStream​(java.io.InputStream in,
                                            int length)
                                     throws java.sql.SQLException

      Throws:
        `java.sql.SQLException`

    - #### setCharacterStreamInternal

          protected void setCharacterStreamInternal​(java.io.Reader in,
                                                    long length)
                                             throws java.sql.SQLException

      Throws:
        `java.sql.SQLException`

    - #### setCharacterStream

          public final void setCharacterStream​(java.io.Reader in,
                                               long length)
                                        throws java.sql.SQLException

      Throws:
        `java.sql.SQLException`

    - #### setCharacterStream

          public final void setCharacterStream​(java.io.Reader in)
                                        throws java.sql.SQLException

      Throws:
        `java.sql.SQLException`

    - #### setCharacterStream

          public final void setCharacterStream​(java.io.Reader in,
                                               int length)
                                        throws java.sql.SQLException

      Throws:
        `java.sql.SQLException`

    - #### setBytes

          public void setBytes​(byte[] value)
                        throws java.sql.SQLException

      Throws:
        `java.sql.SQLException`

    - #### setDate

          public void setDate​(java.sql.Date value,
                              java.util.Calendar cal)
                       throws java.sql.SQLException

      Throws:
        `java.sql.SQLException`

    - #### setDate

          public void setDate​(java.sql.Date value)
                       throws java.sql.SQLException

      Throws:
        `java.sql.SQLException`

    - #### setTime

          public void setTime​(java.sql.Time value,
                              java.util.Calendar cal)
                       throws java.sql.SQLException

      Throws:
        `java.sql.SQLException`

    - #### setTime

          public void setTime​(java.sql.Time value)
                       throws java.sql.SQLException

      Throws:
        `java.sql.SQLException`

    - #### setTimestamp

          public void setTimestamp​(java.sql.Timestamp value,
                                   java.util.Calendar cal)
                            throws java.sql.SQLException

      Throws:
        `java.sql.SQLException`

    - #### setTimestamp

          public void setTimestamp​(java.sql.Timestamp value)
                            throws java.sql.SQLException

      Throws:
        `java.sql.SQLException`

    - #### setBlob

          public void setBlob​(FBBlob blob)
                       throws java.sql.SQLException

      Throws:
        `java.sql.SQLException`

    - #### setClob

          public void setClob​(FBClob clob)
                       throws java.sql.SQLException

      Throws:
        `java.sql.SQLException`

    - #### setRowId

          public void setRowId​(java.sql.RowId rowId)
                        throws java.sql.SQLException

      Throws:
        `java.sql.SQLException`

    - #### getRawDateTimeStruct

          public DatatypeCoder.RawDateTimeStruct getRawDateTimeStruct()
                                                               throws java.sql.SQLException

      Throws:
        `java.sql.SQLException`

    - #### setRawDateTimeStruct

          public void setRawDateTimeStruct​(DatatypeCoder.RawDateTimeStruct raw)
                                    throws java.sql.SQLException

      Throws:
        `java.sql.SQLException`

    - #### getDecimal

          public Decimal<?> getDecimal()
                                throws java.sql.SQLException

      Returns the value as a Decimal type.

      The default for this method is implemented in terms of `getBigDecimal()`, and returning a `Decimal128`. Implementations may return a `Decimal64` (or even `Decimal32`).

      Returns:
        The value as decimal
      Throws:
        `java.sql.SQLException` - For database access errors, or values that cannot be converted.

    - #### getDecimal

          public final <D extends Decimal<D>> D getDecimal​(java.lang.Class<D> targetType)
                                                    throws java.sql.SQLException

      Throws:
        `java.sql.SQLException`

    - #### setDecimal

          public void setDecimal​(Decimal<?> decimal)
                          throws java.sql.SQLException

      Sets the value as a Decimal type.

      The default for this method is implemented in terms of `setBigDecimal(BigDecimal)`.

      Parameters:
        `decimal` - Value to set
      Throws:
        `java.sql.SQLException`

    - #### isInvertTimeZone

          protected boolean isInvertTimeZone()