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 and 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` | `USE_TRANSLATION`
    `static java.lang.String` | `USER`
    `static java.lang.String` | `USER_NAME`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `FBDriver()`

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `boolean` | `acceptsURL(java.lang.String url)` Returns true if the driver thinks that it can open a connection to the given URL.
    `FirebirdConnection` | `connect(FirebirdConnectionProperties properties)` Connect to the specified database using the specified connection properties.
    `java.sql.Connection` | `connect(java.lang.String url, java.util.Properties info)` Attempts to make a database connection to the given URL.
    `int` | `getMajorVersion()` Gets the driver's major version number.
    `int` | `getMinorVersion()` Gets the driver's minor version number.
    `java.util.logging.Logger` | `getParentLogger()`
    `java.sql.DriverPropertyInfo[]` | `getPropertyInfo(java.lang.String url, java.util.Properties info)` Gets information about the possible properties for this driver.
    `boolean` | `jdbcCompliant()` Reports whether this driver is a genuine JDBC COMPLIANTTM driver.
    `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

    - #### USE_TRANSLATION

          public static final java.lang.String USE_TRANSLATION

      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

      Attempts to make a database connection to the given URL. The driver should return "null" if it realizes it is the wrong kind of driver to connect to the given URL. This will be common, as when the JDBC driver manager is asked to connect to a given URL it passes the URL to each loaded driver in turn.

      The driver should raise a SQLException if it is the right driver to connect to the given URL, but has trouble connecting to the database.

      The java.util.Properties argument can be used to passed arbitrary string tag/value pairs as connection arguments. Normally at least "user" and "password" properties should be included in the Properties.

      Specified by:
        `connect` in interface `java.sql.Driver`
      Parameters:
        `url` - the URL of the database to which to connect
        `info` - a list of arbitrary string tag/value pairs as connection arguments. Normally at least a "user" and "password" property should be included.
      Returns:
        a `Connection` object that represents a connection to the URL
      Throws:
        `java.sql.SQLException` - if a database access error occurs

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

      Returns true if the driver thinks that it can open a connection to the given URL. Typically drivers will return true if they understand the subprotocol specified in the URL and false if they don't.
      Specified by:
        `acceptsURL` in interface `java.sql.Driver`
      Parameters:
        `url` - the URL of the database
      Returns:
        true if this driver can connect to the given URL
      Throws:
        `java.sql.SQLException` - if a database access error occurs

    - #### getPropertyInfo

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

      Gets information about the possible properties for this driver.

      The getPropertyInfo method is intended to allow a generic GUI tool to discover what properties it should prompt a human for in order to get enough information to connect to a database. Note that depending on the values the human has supplied so far, additional values may become necessary, so it may be necessary to iterate though several calls to getPropertyInfo.

      Specified by:
        `getPropertyInfo` in interface `java.sql.Driver`
      Parameters:
        `url` - the URL of the database to which to connect
        `info` - a proposed list of tag/value pairs that will be sent on connect open
      Returns:
        an array of DriverPropertyInfo objects describing possible properties. This array may be an empty array if no properties are required.
      Throws:
        `java.sql.SQLException` - if a database access error occurs TODO check the correctness of implementation TODO convert parameters into constants

    - #### getMajorVersion

          public int getMajorVersion()

      Gets the driver's major version number. Initially this should be 1.
      Specified by:
        `getMajorVersion` in interface `java.sql.Driver`
      Returns:
        this driver's major version number

    - #### getMinorVersion

          public int getMinorVersion()

      Gets the driver's minor version number. Initially this should be 0.
      Specified by:
        `getMinorVersion` in interface `java.sql.Driver`
      Returns:
        this driver's minor version number

    - #### jdbcCompliant

          public boolean jdbcCompliant()

      Reports whether this driver is a genuine JDBC COMPLIANTTM driver. A driver may only report true here if it passes the JDBC compliance tests; otherwise it is required to return false. JDBC compliance requires full support for the JDBC API and full support for SQL 92 Entry Level. It is expected that JDBC compliant drivers will be available for all the major commercial databases. This method is not intended to encourage the development of non-JDBC compliant drivers, but is a recognition of the fact that some vendors are interested in using the JDBC API and framework for lightweight databases that do not support full database functionality, or for special databases such as document information retrieval where a SQL implementation may not be feasible.
      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:
        3.0.10

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