## org.h2.android
Class H2Database

    java.lang.Object
      org.h2.android.H2Database

    public class H2Database

extends java.lang.Object

This class represents a database connection.

Nested Class Summary
`static interface` `H2Database.CursorFactory` The cursor factory.

Field Summary
`static int` `CONFLICT_ABORT` When a conflict occurs, abort the current statement, but don't roll back the transaction.
`static int` `CONFLICT_FAIL` When a conflict occurs, return SQLITE_CONSTRAINT, but don't roll back the transaction.
`static int` `CONFLICT_IGNORE` When a conflict occurs, continue, but don't modify the conflicting row.
`static int` `CONFLICT_NONE` When a conflict occurs, do nothing.
`static int` `CONFLICT_REPLACE` When a conflict occurs, the existing rows are replaced.
`static int` `CONFLICT_ROLLBACK` When a conflict occurs, the transaction is rolled back.
`static int` `CREATE_IF_NECESSARY` Create a new database if it doesn't exist.
`static int` `NO_LOCALIZED_COLLATORS` This flag has no effect.
`static int` `OPEN_READONLY` Open the database in read-only mode.
`static int` `OPEN_READWRITE` Open the database in read-write mode (default).

Method Summary
`void` `beginTransaction()` Start a transaction.
`void` `beginTransactionWithListener(H2TransactionListener transactionListener)` Start a transaction.
`void` `close()` Close the connection.
`H2Statement` `compileStatement(java.lang.String sql)` Prepare a statement.
`static H2Database` `create(H2Database.CursorFactory factory)` Create a new in-memory database.
`int` `delete(java.lang.String table, java.lang.String whereClause, java.lang.String[] whereArgs)` Delete a number of rows in this database.
`void` `endTransaction()` End the transaction.
`void` `execSQL(java.lang.String sql)` Execute the given statement.
`void` `execSQL(java.lang.String sql, java.lang.Object[] bindArgs)` Execute the given statement.
`static java.lang.String` `findEditTable(java.lang.String tables)` TODO
`long` `getMaximumSize()` Get the maximum size of the database file in bytes.
`long` `getPageSize()` Get the page size of the database in bytes.
`java.lang.String` `getPath()` Get the name of the database file.
`java.util.Map<java.lang.String,java.lang.String>` `getSyncedTables()` TODO
`int` `getVersion()` Get the database version.
`long` `insert(java.lang.String table, java.lang.String nullColumnHack, android.content.ContentValues values)` Insert a row.
`long` `insertOrThrow(java.lang.String table, java.lang.String nullColumnHack, android.content.ContentValues values)` Try to insert a row.
`long` `insertWithOnConflict(java.lang.String table, java.lang.String nullColumnHack, android.content.ContentValues initialValues, int conflictAlgorithm)` Try to insert a row, using the given conflict resolution option.
`boolean` `inTransaction()` Check if there is an open transaction.
`boolean` `isDbLockedByCurrentThread()` Check if the database is locked by the current thread.
`boolean` `isDbLockedByOtherThreads()` Check if the database is locked by a different thread.
`boolean` `isOpen()` Check if the connection is open.
`boolean` `isReadOnly()` Check if the connection is read-only.
`void` `markTableSyncable(java.lang.String table, java.lang.String deletedTable)` TODO
`void` `markTableSyncable(java.lang.String table, java.lang.String foreignKey, java.lang.String updateTable)` TODO
`boolean` `needUpgrade(int newVersion)` Check if an upgrade is required.
`static H2Database` `openDatabase(java.lang.String path, H2Database.CursorFactory factory, int flags)` Open a connection to the given database.
`static H2Database` `openOrCreateDatabase(java.io.File file, H2Database.CursorFactory factory)` Open a connection to the given database.
`static H2Database` `openOrCreateDatabase(java.lang.String path, H2Database.CursorFactory factory)` Open a connection to the given database.
`android.database.Cursor` `query(boolean distinct, java.lang.String table, java.lang.String[] columns, java.lang.String selection, java.lang.String[] selectionArgs, java.lang.String groupBy, java.lang.String having, java.lang.String orderBy, java.lang.String limit)` Execute the SELECT statement for the given parameters.
`android.database.Cursor` `query(java.lang.String table, java.lang.String[] columns, java.lang.String selection, java.lang.String[] selectionArgs, java.lang.String groupBy, java.lang.String having, java.lang.String orderBy)` Execute the SELECT statement for the given parameters.
`android.database.Cursor` `query(java.lang.String table, java.lang.String[] columns, java.lang.String selection, java.lang.String[] selectionArgs, java.lang.String groupBy, java.lang.String having, java.lang.String orderBy, java.lang.String limit)` Execute the SELECT statement for the given parameters.
`android.database.Cursor` `queryWithFactory(H2Database.CursorFactory cursorFactory, boolean distinct, java.lang.String table, java.lang.String[] columns, java.lang.String selection, java.lang.String[] selectionArgs, java.lang.String groupBy, java.lang.String having, java.lang.String orderBy, java.lang.String limit)` Execute the SELECT statement for the given parameters.
`android.database.Cursor` `rawQuery(java.lang.String sql, java.lang.String[] selectionArgs)` Execute the query.
`android.database.Cursor` `rawQueryWithFactory(H2Database.CursorFactory cursorFactory, java.lang.String sql, java.lang.String[] selectionArgs, java.lang.String editTable)` Execute the query using the given cursor factory.
`static int` `releaseMemory()` Try to release memory.
`long` `replace(java.lang.String table, java.lang.String nullColumnHack, android.content.ContentValues initialValues)` Replace an existing row in the database.
`long` `replaceOrThrow(java.lang.String table, java.lang.String nullColumnHack, android.content.ContentValues initialValues)` Try to replace an existing row in the database.
`void` `setLocale(java.util.Locale locale)` Set the locale.
`void` `setLockingEnabled(boolean lockingEnabled)` Enable or disable thread safety.
`long` `setMaximumSize(long numBytes)` Set the maximum database file size.
`void` `setPageSize(long numBytes)` Set the database page size.
`void` `setTransactionSuccessful()` Mark the transaction as completed successfully.
`void` `setVersion(int version)` Update the database version.
`int` `update(java.lang.String table, android.content.ContentValues values, java.lang.String whereClause, java.lang.String[] whereArgs)` Update one or multiple rows.
`int` `updateWithOnConflict(java.lang.String table, android.content.ContentValues values, java.lang.String whereClause, java.lang.String[] whereArgs, int conflictAlgorithm)` Update one or multiple rows.
`boolean` `yieldIfContended()` Deprecated.
`boolean` `yieldIfContendedSafely()` Temporarily pause the transaction.
`boolean` `yieldIfContendedSafely(long sleepAfterYieldDelay)` Temporarily pause the transaction.

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Field Detail

### CONFLICT_ABORT

    public static final int CONFLICT_ABORT

  When a conflict occurs, abort the current statement, but don't roll back the transaction. This is the default value.

  See Also:
    Constant Field Values

### CONFLICT_FAIL

    public static final int CONFLICT_FAIL

  When a conflict occurs, return SQLITE_CONSTRAINT, but don't roll back the transaction.

  See Also:
    Constant Field Values

### CONFLICT_IGNORE

    public static final int CONFLICT_IGNORE

  When a conflict occurs, continue, but don't modify the conflicting row.

  See Also:
    Constant Field Values

### CONFLICT_NONE

    public static final int CONFLICT_NONE

  When a conflict occurs, do nothing.

  See Also:
    Constant Field Values

### CONFLICT_REPLACE

    public static final int CONFLICT_REPLACE

  When a conflict occurs, the existing rows are replaced.

  See Also:
    Constant Field Values

### CONFLICT_ROLLBACK

    public static final int CONFLICT_ROLLBACK

  When a conflict occurs, the transaction is rolled back.

  See Also:
    Constant Field Values

### CREATE_IF_NECESSARY

    public static final int CREATE_IF_NECESSARY

  Create a new database if it doesn't exist.

  See Also:
    Constant Field Values

### NO_LOCALIZED_COLLATORS

    public static final int NO_LOCALIZED_COLLATORS

  This flag has no effect.

  See Also:
    Constant Field Values

### OPEN_READONLY

    public static final int OPEN_READONLY

  Open the database in read-only mode.

  See Also:
    Constant Field Values

### OPEN_READWRITE

    public static final int OPEN_READWRITE

  Open the database in read-write mode (default).

  See Also:
    Constant Field Values

Method Detail

### create

    public static H2Database create(H2Database.CursorFactory factory)

  Create a new in-memory database.

  Parameters:
    `factory` - the cursor factory
  Returns:
    a connection to this database

### openDatabase

    public static H2Database openDatabase(java.lang.String path,
                                          H2Database.CursorFactory factory,
                                          int flags)

  Open a connection to the given database.

  Parameters:
    `path` - the database file name
    `factory` - the cursor factory
    `flags` - 0, or a combination of OPEN_READONLY and CREATE_IF_NECESSARY
  Returns:
    a connection to this database

### openOrCreateDatabase

    public static H2Database openOrCreateDatabase(java.io.File file,
                                                  H2Database.CursorFactory factory)

  Open a connection to the given database. The database is created if it doesn't exist yet.

  Parameters:
    `file` - the database file
    `factory` - the cursor factory
  Returns:
    a connection to this database

### openOrCreateDatabase

    public static H2Database openOrCreateDatabase(java.lang.String path,
                                                  H2Database.CursorFactory factory)

  Open a connection to the given database. The database is created if it doesn't exist yet.

  Parameters:
    `path` - the database file name
    `factory` - the cursor factory
  Returns:
    a connection to this database

### beginTransaction

    public void beginTransaction()

  Start a transaction.

### beginTransactionWithListener

    public void beginTransactionWithListener(H2TransactionListener transactionListener)

  Start a transaction.

  Parameters:
    `transactionListener` - the transaction listener to use

### close

    public void close()

  Close the connection.

### compileStatement

    public H2Statement compileStatement(java.lang.String sql)

  Prepare a statement.

  Parameters:
    `sql` - the statement
  Returns:
    the prepared statement

### delete

    public int delete(java.lang.String table,
                      java.lang.String whereClause,
                      java.lang.String[] whereArgs)

  Delete a number of rows in this database.

  Parameters:
    `table` - the table
    `whereClause` - the condition
    `whereArgs` - the parameter values
  Returns:
    the number of rows deleted

### endTransaction

    public void endTransaction()

  End the transaction.

### execSQL

    public void execSQL(java.lang.String sql,
                        java.lang.Object[] bindArgs)

  Execute the given statement.

  Parameters:
    `sql` - the statement
    `bindArgs` - the parameter values

### execSQL

    public void execSQL(java.lang.String sql)

  Execute the given statement.

  Parameters:
    `sql` - the statement

### findEditTable

    public static java.lang.String findEditTable(java.lang.String tables)

  TODO

  Parameters:
    `tables` - the list of tables
  Returns:
    TODO

### getMaximumSize

    public long getMaximumSize()

  Get the maximum size of the database file in bytes.

  Returns:
    the maximum size

### getPageSize

    public long getPageSize()

  Get the page size of the database in bytes.

  Returns:
    the page size

### getPath

    public java.lang.String getPath()

  Get the name of the database file.

  Returns:
    the database file name

### getSyncedTables

    public java.util.Map<java.lang.String,java.lang.String> getSyncedTables()

  TODO

  Returns:
    TODO

### getVersion

    public int getVersion()

  Get the database version.

  Returns:
    the database version

### inTransaction

    public boolean inTransaction()

  Check if there is an open transaction.

  Returns:
    true if there is

### insert

    public long insert(java.lang.String table,
                       java.lang.String nullColumnHack,
                       android.content.ContentValues values)

  Insert a row.

  Parameters:
    `table` - the table
    `nullColumnHack` - not used
    `values` - the values
  Returns:
    TODO

### insertOrThrow

    public long insertOrThrow(java.lang.String table,
                              java.lang.String nullColumnHack,
                              android.content.ContentValues values)

  Try to insert a row.

  Parameters:
    `table` - the table
    `nullColumnHack` - not used
    `values` - the values
  Returns:
    TODO

### insertWithOnConflict

    public long insertWithOnConflict(java.lang.String table,
                                     java.lang.String nullColumnHack,
                                     android.content.ContentValues initialValues,
                                     int conflictAlgorithm)

  Try to insert a row, using the given conflict resolution option.

  Parameters:
    `table` - the table
    `nullColumnHack` - not used
    `initialValues` - the values
    `conflictAlgorithm` - what conflict resolution to use
  Returns:
    TODO

### isDbLockedByCurrentThread

    public boolean isDbLockedByCurrentThread()

  Check if the database is locked by the current thread.

  Returns:
    true if it is

### isDbLockedByOtherThreads

    public boolean isDbLockedByOtherThreads()

  Check if the database is locked by a different thread.

  Returns:
    true if it is

### isOpen

    public boolean isOpen()

  Check if the connection is open.

  Returns:
    true if it is

### isReadOnly

    public boolean isReadOnly()

  Check if the connection is read-only.

  Returns:
    true if it is

### markTableSyncable

    public void markTableSyncable(java.lang.String table,
                                  java.lang.String deletedTable)

  TODO

  Parameters:
    `table` - the table
    `deletedTable` - TODO

### markTableSyncable

    public void markTableSyncable(java.lang.String table,
                                  java.lang.String foreignKey,
                                  java.lang.String updateTable)

  TODO

  Parameters:
    `table` - the table
    `foreignKey` - the foreign key
    `updateTable` - TODO

### needUpgrade

    public boolean needUpgrade(int newVersion)

  Check if an upgrade is required.

  Parameters:
    `newVersion` - the new version
  Returns:
    true if the current version doesn't match

### query

    public android.database.Cursor query(boolean distinct,
                                         java.lang.String table,
                                         java.lang.String[] columns,
                                         java.lang.String selection,
                                         java.lang.String[] selectionArgs,
                                         java.lang.String groupBy,
                                         java.lang.String having,
                                         java.lang.String orderBy,
                                         java.lang.String limit)

  Execute the SELECT statement for the given parameters.

  Parameters:
    `distinct` - if only distinct rows should be returned
    `table` - the table
    `columns` - the list of columns
    `selection` - TODO
    `selectionArgs` - TODO
    `groupBy` - the group by list or null
    `having` - the having condition or null
    `orderBy` - the order by list or null
    `limit` - the limit or null
  Returns:
    the cursor

### query

    public android.database.Cursor query(java.lang.String table,
                                         java.lang.String[] columns,
                                         java.lang.String selection,
                                         java.lang.String[] selectionArgs,
                                         java.lang.String groupBy,
                                         java.lang.String having,
                                         java.lang.String orderBy)

  Execute the SELECT statement for the given parameters.

  Parameters:
    `table` - the table
    `columns` - the list of columns
    `selection` - TODO
    `selectionArgs` - TODO
    `groupBy` - the group by list or null
    `having` - the having condition or null
    `orderBy` - the order by list or null
  Returns:
    the cursor

### query

    public android.database.Cursor query(java.lang.String table,
                                         java.lang.String[] columns,
                                         java.lang.String selection,
                                         java.lang.String[] selectionArgs,
                                         java.lang.String groupBy,
                                         java.lang.String having,
                                         java.lang.String orderBy,
                                         java.lang.String limit)

  Execute the SELECT statement for the given parameters.

  Parameters:
    `table` - the table
    `columns` - the list of columns
    `selection` - TODO
    `selectionArgs` - TODO
    `groupBy` - the group by list or null
    `having` - the having condition or null
    `orderBy` - the order by list or null
    `limit` - the limit or null
  Returns:
    the cursor

### queryWithFactory

    public android.database.Cursor queryWithFactory(H2Database.CursorFactory cursorFactory,
                                                    boolean distinct,
                                                    java.lang.String table,
                                                    java.lang.String[] columns,
                                                    java.lang.String selection,
                                                    java.lang.String[] selectionArgs,
                                                    java.lang.String groupBy,
                                                    java.lang.String having,
                                                    java.lang.String orderBy,
                                                    java.lang.String limit)

  Execute the SELECT statement for the given parameters.

  Parameters:
    `cursorFactory` - the cursor factory to use
    `distinct` - if only distinct rows should be returned
    `table` - the table
    `columns` - the list of columns
    `selection` - TODO
    `selectionArgs` - TODO
    `groupBy` - the group by list or null
    `having` - the having condition or null
    `orderBy` - the order by list or null
    `limit` - the limit or null
  Returns:
    the cursor

### rawQuery

    public android.database.Cursor rawQuery(java.lang.String sql,
                                            java.lang.String[] selectionArgs)

  Execute the query.

  Parameters:
    `sql` - the SQL statement
    `selectionArgs` - the parameter values
  Returns:
    the cursor

### rawQueryWithFactory

    public android.database.Cursor rawQueryWithFactory(H2Database.CursorFactory cursorFactory,
                                                       java.lang.String sql,
                                                       java.lang.String[] selectionArgs,
                                                       java.lang.String editTable)

  Execute the query using the given cursor factory.

  Parameters:
    `cursorFactory` - the cursor factory
    `sql` - the SQL statement
    `selectionArgs` - the parameter values
    `editTable` - TODO
  Returns:
    the cursor

### releaseMemory

    public static int releaseMemory()

  Try to release memory.

  Returns:
    TODO

### replace

    public long replace(java.lang.String table,
                        java.lang.String nullColumnHack,
                        android.content.ContentValues initialValues)

  Replace an existing row in the database.

  Parameters:
    `table` - the table
    `nullColumnHack` - ignored
    `initialValues` - the values
  Returns:
    TODO

### replaceOrThrow

    public long replaceOrThrow(java.lang.String table,
                               java.lang.String nullColumnHack,
                               android.content.ContentValues initialValues)

  Try to replace an existing row in the database.

  Parameters:
    `table` - the table
    `nullColumnHack` - ignored
    `initialValues` - the values
  Returns:
    TODO

### setLocale

    public void setLocale(java.util.Locale locale)

  Set the locale.

  Parameters:
    `locale` - the new locale

### setLockingEnabled

    public void setLockingEnabled(boolean lockingEnabled)

  Enable or disable thread safety.

  Parameters:
    `lockingEnabled` - the new value

### setMaximumSize

    public long setMaximumSize(long numBytes)

  Set the maximum database file size.

  Parameters:
    `numBytes` - the file size in bytes
  Returns:
    the effective maximum size

### setPageSize

    public void setPageSize(long numBytes)

  Set the database page size. The value can not be changed once the database exists.

  Parameters:
    `numBytes` - the page size

### setTransactionSuccessful

    public void setTransactionSuccessful()

  Mark the transaction as completed successfully.

### setVersion

    public void setVersion(int version)

  Update the database version.

  Parameters:
    `version` - the version

### update

    public int update(java.lang.String table,
                      android.content.ContentValues values,
                      java.lang.String whereClause,
                      java.lang.String[] whereArgs)

  Update one or multiple rows.

  Parameters:
    `table` - the table
    `values` - the values
    `whereClause` - the where condition
    `whereArgs` - the parameter values
  Returns:
    the number of rows updated

### updateWithOnConflict

    public int updateWithOnConflict(java.lang.String table,
                                    android.content.ContentValues values,
                                    java.lang.String whereClause,
                                    java.lang.String[] whereArgs,
                                    int conflictAlgorithm)

  Update one or multiple rows.

  Parameters:
    `table` - the table
    `values` - the values
    `whereClause` - the where condition
    `whereArgs` - the parameter values
    `conflictAlgorithm` - the conflict resolution option
  Returns:
    the number of rows updated

### yieldIfContended

    public boolean yieldIfContended()

  Deprecated.

  TODO

  Returns:
    TODO

### yieldIfContendedSafely

    public boolean yieldIfContendedSafely(long sleepAfterYieldDelay)

  Temporarily pause the transaction.

  Parameters:
    `sleepAfterYieldDelay` - TODO
  Returns:
    TODO

### yieldIfContendedSafely

    public boolean yieldIfContendedSafely()

  Temporarily pause the transaction.

  Returns:
    TODO