Package org.firebirdsql.jdbc

## Class FBDriver

- java.lang.Object
- - org.firebirdsql.jdbc.FBDriver

- All Implemented Interfaces:
    `java.sql.Driver`, `FirebirdDriver`

      public class FBDriver
      extends java.lang.Object
      implements FirebirdDriver

  The Jaybird JDBC Driver implementation for the Firebird database.
  Author:
    David Jencks, Mark Rotteveel

- - ### Field Summary

    Fields
    Modifier and Type | Field | Description
    --- | --- | ---
    `static java.lang.String` | `BLOB_BUFFER_LENGTH` |
    `static java.lang.String` | `CHARSET` |
    `static java.lang.String` | `DATABASE` |
    `static java.lang.String` | `PASSWORD` |
    `static java.lang.String` | `TPB_MAPPING` |
    `static java.lang.String` | `USER` |
    `static java.lang.String` | `USER_NAME` |

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `FBDriver()` |

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `boolean` | `acceptsURL​(java.lang.String url)` |
    `java.sql.Connection` | `connect​(java.lang.String url, java.util.Properties info)` |
    `FirebirdConnection` | `connect​(FirebirdConnectionProperties properties)` | Connect to the specified database using the specified connection properties.
    `int` | `getMajorVersion()` |
    `int` | `getMinorVersion()` |
    `java.util.logging.Logger` | `getParentLogger()` |
    `java.sql.DriverPropertyInfo[]` | `getPropertyInfo​(java.lang.String url, java.util.Properties info)` |
    `boolean` | `jdbcCompliant()` |
    `FirebirdConnectionProperties` | `newConnectionProperties()` | Create new instance of `FirebirdConnectionProperties` that can later be used in `FirebirdDriver.connect(FirebirdConnectionProperties)` call.
    `static java.util.Map<java.lang.String,​java.lang.String>` | `normalizeProperties​(java.lang.String jdbcUrl, java.util.Properties connectionProperties)` | Merges the properties from the JDBC URL and properties object, normalizes them to a standard name.

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

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

- - ### Field Detail

    - #### CHARSET

          public static final java.lang.String CHARSET

      See Also:
        Constant Field Values

    - #### USER

          public static final java.lang.String USER

      See Also:
        Constant Field Values

    - #### USER_NAME

          public static final java.lang.String USER_NAME

      See Also:
        Constant Field Values

    - #### PASSWORD

          public static final java.lang.String PASSWORD

      See Also:
        Constant Field Values

    - #### DATABASE

          public static final java.lang.String DATABASE

      See Also:
        Constant Field Values

    - #### BLOB_BUFFER_LENGTH

          public static final java.lang.String BLOB_BUFFER_LENGTH

      See Also:
        Constant Field Values

    - #### TPB_MAPPING

          public static final java.lang.String TPB_MAPPING

      See Also:
        Constant Field Values

  - ### Constructor Detail

    - #### FBDriver

          public FBDriver()

  - ### Method Detail

    - #### connect

          public java.sql.Connection connect​(java.lang.String url,
                                             java.util.Properties info)
                                      throws java.sql.SQLException

      Specified by:
        `connect` in interface `java.sql.Driver`
      Throws:
        `java.sql.SQLException`

    - #### connect

          public FirebirdConnection connect​(FirebirdConnectionProperties properties)
                                     throws java.sql.SQLException

      Description copied from interface: `FirebirdDriver`
      Connect to the specified database using the specified connection properties.
      Specified by:
        `connect` in interface `FirebirdDriver`
      Parameters:
        `properties` - instance of `FirebirdConnectionProperties` created in `FirebirdDriver.newConnectionProperties()` method.
      Returns:
        new connection to the Firebird database.
      Throws:
        `java.sql.SQLException` - if an error happened while connecting to the database.

    - #### newConnectionProperties

          public FirebirdConnectionProperties newConnectionProperties()

      Description copied from interface: `FirebirdDriver`
      Create new instance of `FirebirdConnectionProperties` that can later be used in `FirebirdDriver.connect(FirebirdConnectionProperties)` call.
      Specified by:
        `newConnectionProperties` in interface `FirebirdDriver`
      Returns:
        instance of `FirebirdConnectionProperties`.

    - #### acceptsURL

          public boolean acceptsURL​(java.lang.String url)
                             throws java.sql.SQLException

      Specified by:
        `acceptsURL` in interface `java.sql.Driver`
      Throws:
        `java.sql.SQLException`

    - #### getPropertyInfo

          public java.sql.DriverPropertyInfo[] getPropertyInfo​(java.lang.String url,
                                                               java.util.Properties info)
                                                        throws java.sql.SQLException

      Specified by:
        `getPropertyInfo` in interface `java.sql.Driver`
      Throws:
        `java.sql.SQLException`

    - #### getMajorVersion

          public int getMajorVersion()

      Specified by:
        `getMajorVersion` in interface `java.sql.Driver`

    - #### getMinorVersion

          public int getMinorVersion()

      Specified by:
        `getMinorVersion` in interface `java.sql.Driver`

    - #### jdbcCompliant

          public boolean jdbcCompliant()

      Specified by:
        `jdbcCompliant` in interface `java.sql.Driver`

    - #### getParentLogger

          public java.util.logging.Logger getParentLogger()
                                                   throws java.sql.SQLFeatureNotSupportedException

      Specified by:
        `getParentLogger` in interface `java.sql.Driver`
      Throws:
        `java.sql.SQLFeatureNotSupportedException`

    - #### normalizeProperties

          public static java.util.Map<java.lang.String,​java.lang.String> normalizeProperties​(java.lang.String jdbcUrl,
                                                                                                   java.util.Properties connectionProperties)
                                                                                            throws java.sql.SQLException

      Merges the properties from the JDBC URL and properties object, normalizes them to a standard name.

      If a property with the exact same name is present in both, the property specified in the JDBC url takes precedence. Short and long form `isc_dpb` properties will be merged if both are present, as will two different (non-`isc_dpb`) aliases, but precedence is undefined. If a property is specified in the (short or long) `isc_dpb` form and as an alias, then an exception is thrown.

      The property name that is the result of normalization, is implementation specific behaviour, and might change in a future version of Jaybird. When present, the (normalized) property `"database"` will be excluded, this also might change in the future.

      Parameters:
        `jdbcUrl` - JDBC Url
        `connectionProperties` - Properties object
      Returns:
        New map object with the merged and normalized connection properties
      Throws:
        `java.sql.SQLException` - For failures to extract connection properties from `jdbcUrl` (URL decoding errors), or presence of the same property under multiple aliases.
      Since:
        4.0.1