public <T> T functionOnDatabase(DbFunction<T> dbFunction) {
		SQLiteDatabase db = getDatabaseConnection();
		try {
			return dbFunction.apply(db);
		} finally {
			reduceDatabaseConnection();
		}
	}
public <T> T functionOnDatabase(DbFunction<T> dbFunction) {
		SQLiteDatabase db = getDatabaseConnection();
		try {
			return dbFunction.apply(db);
		} finally {
			reduceDatabaseConnection();
		}
	}
public < T > T functionOnDatabase ( DbFunction < T > dbFunction ) { SQLiteDatabase db = getDatabaseConnection ( ) ; try { return dbFunction . apply ( db ) ; } finally { reduceDatabaseConnection ( ) ; } }
Execute a function on the database, to return some values. The opening and closing of the database connection is handled for you.<br>
Note if you want to query a cursor from the database consider using the {@code DbCreator#query} or {@code DbCreator#rawQuery} method.<br>
This can be useful when working with {@code CursorAdapter}

@param <T>        Resulting type
@param dbFunction Function you want to execute on the database
@return The result of the function call
Execute a function on the database to return some values . The opening and closing of the database connection is handled for you . <br > Note if you want to query a cursor from the database consider using the { @code DbCreator#query } or { @code DbCreator#rawQuery } method . <br > This can be useful when working with { @code CursorAdapter }