Example usage for android.database.sqlite SQLiteConnection isPreparedStatementInCache

List of usage examples for android.database.sqlite SQLiteConnection isPreparedStatementInCache

Introduction

In this page you can find the example usage for android.database.sqlite SQLiteConnection isPreparedStatementInCache.

Prototype

boolean isPreparedStatementInCache(String sql) 

Source Link

Usage

From source file:io.requery.android.database.sqlite.SQLiteConnectionPool.java

private SQLiteConnection tryAcquireNonPrimaryConnectionLocked(String sql, int connectionFlags) {
    // Try to acquire the next connection in the queue.
    SQLiteConnection connection;
    final int availableCount = mAvailableNonPrimaryConnections.size();
    if (availableCount > 1 && sql != null) {
        // If we have a choice, then prefer a connection that has the
        // prepared statement in its cache.
        for (int i = 0; i < availableCount; i++) {
            connection = mAvailableNonPrimaryConnections.get(i);
            if (connection.isPreparedStatementInCache(sql)) {
                mAvailableNonPrimaryConnections.remove(i);
                finishAcquireConnectionLocked(connection, connectionFlags); // might throw
                return connection;
            }/*from   w w  w . j a v  a 2  s .  com*/
        }
    }
    if (availableCount > 0) {
        // Otherwise, just grab the next one.
        connection = mAvailableNonPrimaryConnections.remove(availableCount - 1);
        finishAcquireConnectionLocked(connection, connectionFlags); // might throw
        return connection;
    }

    // Expand the pool if needed.
    int openConnections = mAcquiredConnections.size();
    if (mAvailablePrimaryConnection != null) {
        openConnections += 1;
    }
    if (openConnections >= mMaxConnectionPoolSize) {
        return null;
    }
    connection = openConnectionLocked(mConfiguration, false /*primaryConnection*/); // might throw
    finishAcquireConnectionLocked(connection, connectionFlags); // might throw
    return connection;
}