org.h2.api

## Interface DatabaseEventListener

- All Superinterfaces:
    java.util.EventListener

      public interface DatabaseEventListener
      extends java.util.EventListener

  A class that implements this interface can get notified about exceptions and other events. A database event listener can be registered when connecting to a database. Example database URL: jdbc:h2:./test;DATABASE_EVENT_LISTENER='com.acme.DbListener'

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static int` | `STATE_BACKUP_FILE` This state is used during the BACKUP command.
    `static int` | `STATE_CREATE_INDEX` This state is used when re-creating an index.
    `static int` | `STATE_RECONNECTED` This state is used after re-connecting to a database (if auto-reconnect is enabled).
    `static int` | `STATE_RECOVER` This state is used when re-applying the transaction log or rolling back uncommitted transactions.
    `static int` | `STATE_SCAN_FILE` This state is used when scanning the database file.
    `static int` | `STATE_STATEMENT_END` This state is used when a query ends.
    `static int` | `STATE_STATEMENT_PROGRESS` This state is used for periodic notification during long-running queries.
    `static int` | `STATE_STATEMENT_START` This state is used when a query starts.

  - ### Method Summary

    All Methods Instance Methods Default Methods
    Modifier and Type | Method and Description
    --- | ---
    `default void` | `closingDatabase()` This method is called before the database is closed normally.
    `default void` | `exceptionThrown(java.sql.SQLException e, java.lang.String sql)` This method is called if an exception occurred.
    `default void` | `init(java.lang.String url)` This method is called just after creating the object.
    `default void` | `opened()` This method is called after the database has been opened.
    `default void` | `setProgress(int state, java.lang.String name, long x, long max)` This method is called for long running events, such as recovering, scanning a file or building an index.

- - ### Field Detail

    - #### STATE_SCAN_FILE

          static final int STATE_SCAN_FILE

      This state is used when scanning the database file.
      See Also:
        Constant Field Values

    - #### STATE_CREATE_INDEX

          static final int STATE_CREATE_INDEX

      This state is used when re-creating an index.
      See Also:
        Constant Field Values

    - #### STATE_RECOVER

          static final int STATE_RECOVER

      This state is used when re-applying the transaction log or rolling back uncommitted transactions.
      See Also:
        Constant Field Values

    - #### STATE_BACKUP_FILE

          static final int STATE_BACKUP_FILE

      This state is used during the BACKUP command.
      See Also:
        Constant Field Values

    - #### STATE_RECONNECTED

          static final int STATE_RECONNECTED

      This state is used after re-connecting to a database (if auto-reconnect is enabled).
      See Also:
        Constant Field Values

    - #### STATE_STATEMENT_START

          static final int STATE_STATEMENT_START

      This state is used when a query starts.
      See Also:
        Constant Field Values

    - #### STATE_STATEMENT_END

          static final int STATE_STATEMENT_END

      This state is used when a query ends.
      See Also:
        Constant Field Values

    - #### STATE_STATEMENT_PROGRESS

          static final int STATE_STATEMENT_PROGRESS

      This state is used for periodic notification during long-running queries.
      See Also:
        Constant Field Values

  - ### Method Detail

    - #### init

          default void init(java.lang.String url)

      This method is called just after creating the object. This is done when opening the database if the listener is specified in the database URL, but may be later if the listener is set at runtime with the SET SQL statement.
      Parameters:
        `url` - - the database URL

    - #### opened

          default void opened()

      This method is called after the database has been opened. It is safe to connect to the database and execute statements at this point.

    - #### exceptionThrown

          default void exceptionThrown(java.sql.SQLException e,
                                       java.lang.String sql)

      This method is called if an exception occurred.
      Parameters:
        `e` - the exception
        `sql` - the SQL statement

    - #### setProgress

          default void setProgress(int state,
                                   java.lang.String name,
                                   long x,
                                   long max)

      This method is called for long running events, such as recovering, scanning a file or building an index.

      More states might be added in future versions, therefore implementations should silently ignore states that they don't understand.

      Parameters:
        `state` - the state
        `name` - the object name
        `x` - the current position
        `max` - the highest possible value or 0 if unknown

    - #### closingDatabase

          default void closingDatabase()

      This method is called before the database is closed normally. It is safe to connect to the database and execute statements at this point, however the connection must be closed before the method returns.