类android.database.sqlite.SQLiteCursor源码实例Demo

下面列出了怎么用android.database.sqlite.SQLiteCursor的API类实例代码及写法,或者点击链接到github查看源代码。

源代码1 项目: firebase-android-sdk   文件: SQLitePersistence.java
/**
 * Uses the given binding arguments as positional parameters for the query.
 *
 * <p>Note that unlike {@link SQLiteDatabase#rawQuery}, this method takes Object binding
 * objects. Values in the <tt>args</tt> array need to be of a type that's usable in any of the
 * SQLiteProgram bindFoo methods.
 *
 * @return this Query object, for chaining.
 */
Query binding(Object... args) {
  // This is gross, but the best way to preserve both the readability of the caller (since
  // values don't have be arbitrarily converted to Strings) and allows BLOBs to be used as
  // bind arguments.
  //
  // The trick here is that since db.query and db.rawQuery take String[] bind arguments, we
  // need some other way to bind. db.execSQL takes Object[] bind arguments but doesn't actually
  // allow querying because it doesn't return a Cursor. SQLiteQuery does allow typed bind
  // arguments, but isn't directly usable.
  //
  // However, you can get to the SQLiteQuery indirectly by supplying a CursorFactory to
  // db.rawQueryWithFactory. The factory's newCursor method will be called with a new
  // SQLiteQuery, and now we can bind with typed values.

  cursorFactory =
      (db1, masterQuery, editTable, query) -> {
        bind(query, args);
        return new SQLiteCursor(masterQuery, editTable, query);
      };
  return this;
}
 
源代码2 项目: AvI   文件: SQLiteAndroidDatabase.java
private void bindPreHoneycomb(JSONObject row, String key, Cursor cursor, int i) throws JSONException {
    // Since cursor.getType() is not available pre-honeycomb, this is
    // a workaround so we don't have to bind everything as a string
    // Details here: http://stackoverflow.com/q/11658239
    SQLiteCursor sqLiteCursor = (SQLiteCursor) cursor;
    CursorWindow cursorWindow = sqLiteCursor.getWindow();
    int pos = cursor.getPosition();
    if (cursorWindow.isNull(pos, i)) {
        row.put(key, JSONObject.NULL);
    } else if (cursorWindow.isLong(pos, i)) {
        row.put(key, cursor.getLong(i));
    } else if (cursorWindow.isFloat(pos, i)) {
        row.put(key, cursor.getDouble(i));
    /* ** Read BLOB as Base-64 DISABLED in this branch:
    } else if (cursorWindow.isBlob(pos, i)) {
        row.put(key, new String(Base64.encode(cursor.getBlob(i), Base64.DEFAULT)));
    // ** Read BLOB as Base-64 DISABLED to HERE. */
    } else { // string
        row.put(key, cursor.getString(i));
    }
}
 
/**
 * {@inheritDoc}
 */
@Override
public Cursor newCursor(SQLiteDatabase db, SQLiteCursorDriver driver,
                        String editTable, SQLiteQuery query) {

    if (debugLogQueries) {
        Log.d(GeoPackageCursorFactory.class.getSimpleName(), query.toString());
    }

    // Create a standard cursor
    Cursor cursor = new SQLiteCursor(driver, editTable, query);

    // Wrap the cursor
    Cursor wrappedCursor = wrapCursor(cursor, editTable);

    return wrappedCursor;
}
 
/**
 * Get the SQLite Android Bindings cursor factory
 *
 * @return bindings cursor factory
 * @since 3.4.0
 */
public org.sqlite.database.sqlite.SQLiteDatabase.CursorFactory getBindingsCursorFactory() {
    return new org.sqlite.database.sqlite.SQLiteDatabase.CursorFactory() {

        /**
         * {@inheritDoc}
         */
        @Override
        public Cursor newCursor(org.sqlite.database.sqlite.SQLiteDatabase db, org.sqlite.database.sqlite.SQLiteCursorDriver driver, String editTable, org.sqlite.database.sqlite.SQLiteQuery query) {

            if (debugLogQueries) {
                Log.d(GeoPackageCursorFactory.class.getSimpleName(), query.toString());
            }

            // Create a standard cursor
            Cursor cursor = new org.sqlite.database.sqlite.SQLiteCursor(driver, editTable, query);

            // Wrap the cursor
            Cursor wrappedCursor = wrapCursor(cursor, editTable);

            return wrappedCursor;
        }

    };
}
 
源代码5 项目: android_dbinspector   文件: DatabaseHelper.java
/**
 * Compat method so we can get type of column on API < 11.
 * Source: http://stackoverflow.com/a/20685546/2643666
 */
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
public static int getColumnType(Cursor cursor, int col) {
    if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) {
        SQLiteCursor sqLiteCursor = (SQLiteCursor) cursor;
        CursorWindow cursorWindow = sqLiteCursor.getWindow();
        int pos = cursor.getPosition();
        int type = -1;
        if (cursorWindow.isNull(pos, col)) {
            type = FIELD_TYPE_NULL;
        } else if (cursorWindow.isLong(pos, col)) {
            type = FIELD_TYPE_INTEGER;
        } else if (cursorWindow.isFloat(pos, col)) {
            type = FIELD_TYPE_FLOAT;
        } else if (cursorWindow.isString(pos, col)) {
            type = FIELD_TYPE_STRING;
        } else if (cursorWindow.isBlob(pos, col)) {
            type = FIELD_TYPE_BLOB;
        }
        return type;
    } else {
        return cursor.getType(col);
    }
}
 
源代码6 项目: whassup   文件: Whassup.java
public SQLiteDatabase openDatabase(final File dbFile) {
    return SQLiteDatabase.openDatabase(dbFile.getAbsolutePath(), new SQLiteDatabase.CursorFactory() {
        @Override
        @SuppressWarnings("deprecation")
        public Cursor newCursor(final SQLiteDatabase db, SQLiteCursorDriver driver, String editTable, SQLiteQuery query) {
            return new SQLiteCursor(db, driver, editTable, query) {
                @Override
                public void close() {
                    Log.d(TAG, "closing cursor");
                    super.close();
                    db.close();
                    if (!dbFile.delete()) {
                        Log.w(TAG, "could not delete database " + dbFile);
                    }
                }
            };
        }
    }, SQLiteDatabase.OPEN_READWRITE);
}
 
源代码7 项目: alchemy   文件: AndroidQuery.java
@Override
public SQLiteIterator select() {
    mDb.acquireReference();
    try {
        final SQLiteCursorDriver driver = SQLiteCompat.newDriver(mDb, mSql);
        return new CursorIterator(new SQLiteCursor(driver, null, mQuery));
    } finally {
        mDb.releaseReference();
    }
}
 
源代码8 项目: Pix-Art-Messenger   文件: CursorUtils.java
public static void upgradeCursorWindowSize(final Cursor cursor) {
    if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.P) {
        if (cursor instanceof AbstractWindowedCursor) {
            final AbstractWindowedCursor windowedCursor = (AbstractWindowedCursor) cursor;
            windowedCursor.setWindow(new CursorWindow("4M", 4 * 1024 * 1024));
        }
        if (cursor instanceof SQLiteCursor) {
            ((SQLiteCursor) cursor).setFillWindowForwardOnly(true);
        }
    }
}
 
源代码9 项目: QuantumFlux   文件: QuantumFluxCursorFactory.java
@Override
public Cursor newCursor(SQLiteDatabase sqLiteDatabase, SQLiteCursorDriver sqLiteCursorDriver, String tableName, SQLiteQuery sqLiteQuery) {
    if (isDebugEnabled) {
        QuantumFluxLog.d(sqLiteQuery.toString());
    }

    return new SQLiteCursor(sqLiteCursorDriver, tableName, sqLiteQuery);
}
 
源代码10 项目: CPOrm   文件: CPOrmCursorFactory.java
@Override
public Cursor newCursor(SQLiteDatabase sqLiteDatabase, SQLiteCursorDriver sqLiteCursorDriver, String tableName, SQLiteQuery sqLiteQuery) {

    if (debugEnabled) {
        CPOrmLog.d(sqLiteQuery.toString());
    }

    return new SQLiteCursor(sqLiteCursorDriver, tableName, sqLiteQuery);
}
 
源代码11 项目: ApkTrack   文件: SugarCursorFactory.java
@SuppressWarnings("deprecation")
public Cursor newCursor(SQLiteDatabase sqLiteDatabase,
        SQLiteCursorDriver sqLiteCursorDriver,
        String editTable,
        SQLiteQuery sqLiteQuery) {

    if (debugEnabled) {
        Log.d("SQL Log", sqLiteQuery.toString());
    }

    return new SQLiteCursor(sqLiteDatabase, sqLiteCursorDriver, editTable, sqLiteQuery);
}
 
源代码12 项目: BobEngine   文件: DBType.java
public static int getType(Cursor cursor, int i) {
    SQLiteCursor sqLiteCursor = (SQLiteCursor) cursor;
    CursorWindow cursorWindow = sqLiteCursor.getWindow();
    int pos = cursor.getPosition();
    int type = -1;

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { // Honeycomb or later.
        type = cursor.getType(i);

        if (type == Cursor.FIELD_TYPE_BLOB) {
            type = FIELD_TYPE_BLOB;
        } else if (type == Cursor.FIELD_TYPE_FLOAT) {
            type = FIELD_TYPE_FLOAT;
        } else if (type == Cursor.FIELD_TYPE_INTEGER) {
            type = FIELD_TYPE_INTEGER;
        } else if (type == Cursor.FIELD_TYPE_NULL) {
            type = FIELD_TYPE_NULL;
        } else if (type == Cursor.FIELD_TYPE_STRING) {
            type = FIELD_TYPE_STRING;
        }
    } else {                                           // Before Honeycomb
        if (cursorWindow.isNull(pos, i)) {
            type = FIELD_TYPE_NULL;
        } else if (cursorWindow.isLong(pos, i)) {
            type = FIELD_TYPE_INTEGER;
        } else if (cursorWindow.isFloat(pos, i)) {
            type = FIELD_TYPE_FLOAT;
        } else if (cursorWindow.isString(pos, i)) {
            type = FIELD_TYPE_STRING;
        } else if (cursorWindow.isBlob(pos, i)) {
            type = FIELD_TYPE_BLOB;
        }
    }

    return type;
}
 
源代码13 项目: NexusData   文件: DatabaseHelper.java
@SuppressWarnings("deprecation")
@Override
public Cursor newCursor(SQLiteDatabase db, SQLiteCursorDriver masterQuery,
                        String editTable, SQLiteQuery query) {
    LOG.debug(query.toString());

    // non-deprecated API is only available in API 11
    return new SQLiteCursor(db, masterQuery, editTable, query);
}
 
源代码14 项目: Conversations   文件: CursorUtils.java
public static void upgradeCursorWindowSize(final Cursor cursor) {
    if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.P) {
        if (cursor instanceof AbstractWindowedCursor) {
            final AbstractWindowedCursor windowedCursor = (AbstractWindowedCursor) cursor;
            windowedCursor.setWindow(new CursorWindow("4M", 4 * 1024 * 1024));
        }
        if (cursor instanceof SQLiteCursor) {
            ((SQLiteCursor) cursor).setFillWindowForwardOnly(true);
        }
    }
}
 
源代码15 项目: utexas-utilities   文件: BuildingDatabase.java
public Cursor query(String tablename, String[] columns, String selection,
        String[] selectionArgs, String groupBy, String having, String orderBy) {
    if (selection != null) {
        SQLiteCursor c = (SQLiteCursor) getReadableDatabase().query(
                tablename,
                columns,
                KEY_SUGGEST_COLUMN_TEXT_1 + " LIKE '%" + selection + "%' OR "
                        + KEY_SUGGEST_COLUMN_TEXT_2 + " LIKE '%" + selection + "%'", selectionArgs,
                groupBy, having, orderBy);
        c.moveToFirst();
        return c;
    } else {
        return getReadableDatabase().query(tablename, columns, selection, selectionArgs, groupBy, having, orderBy);
    }
}
 
源代码16 项目: UTubeTV   文件: CursorFactoryDebugger.java
@Override
public Cursor newCursor(SQLiteDatabase db, SQLiteCursorDriver masterQuery, String editTable, SQLiteQuery query) {
  if (debugQueries) {
    DUtils.log(query.toString());
  }
  return new SQLiteCursor(masterQuery, editTable, query);
}
 
源代码17 项目: squidb   文件: SquidCursorFactory.java
@Override
public Cursor newCursor(SQLiteDatabase db, SQLiteCursorDriver masterQuery, String editTable, SQLiteQuery query) {
    bindArgumentsToProgram(query, sqlArgs);
    return new SQLiteCursor(masterQuery, editTable, query);
}
 
源代码18 项目: AsymmetricGridView   文件: DefaultCursorAdapter.java
@Override public Object getItem(int position) {
  return new CursorAdapterItem((SQLiteCursor) super.getItem(position));
}
 
源代码19 项目: AsymmetricGridView   文件: DefaultCursorAdapter.java
CursorAdapterItem(SQLiteCursor cursor) {
  super(cursor.getInt(3), cursor.getInt(2), cursor.getInt(1));
}
 
源代码20 项目: android-schema-utils   文件: SQLiteMaster.java
@SuppressWarnings("deprecation")
@Override
public Cursor newCursor(SQLiteDatabase db, SQLiteCursorDriver masterQuery, String editTable, SQLiteQuery query) {
  return new SQLiteCursor(db, masterQuery, editTable, query);
}