Подтвердить что ты не робот

Android SQLite - Cursor & ContentValues

Есть ли способ получить объект ContentValues ​​из SQLite? Очень полезно, что мы можем вставлять ContentValues ​​в БД, и было бы более полезно получить оттуда резюме.

4b9b3361

Ответ 1

Вы можете использовать метод cursorRowToContentValues ​​(курсор, значения ContentValues) класса DatabaseUtils.

Пример

Cursor c = db.query(tableName, 
            tableColumn, 
            where, 
            whereArgs,
            groupBy,
            having,
            orderBy);

ArrayList<ContentValues> retVal = new ArrayList<ContentValues>();
ContentValues map;  
if(c.moveToFirst()) {       
   do {
        map = new ContentValues();
        DatabaseUtils.cursorRowToContentValues(c, map);                 
        retVal.add(map);
    } while(c.moveToNext());
}

c.close();  

Ответ 2

Я написал свою собственную версию метода DatabaseUtils.cursorRowToContentValues, который Дэвид-му упомянул во избежание ошибка с булевыми выражениями. Он просит Cursor анализировать int и плавать на основе типов в базе данных SQL, а не анализировать их при вызове методов в ContentValues.

public static ContentValues cursorRowToContentValues(Cursor cursor) {
    ContentValues values = new ContentValues();
    String[] columns = cursor.getColumnNames();
    int length = columns.length;
    for (int i = 0; i < length; i++) {
        switch (cursor.getType(i)) {
            case Cursor.FIELD_TYPE_NULL:
                values.putNull(columns[i]);
                break;
            case Cursor.FIELD_TYPE_INTEGER:
                values.put(columns[i], cursor.getLong(i));
                break;
            case Cursor.FIELD_TYPE_FLOAT:
                values.put(columns[i], cursor.getDouble(i));
                break;
            case Cursor.FIELD_TYPE_STRING:
                values.put(columns[i], cursor.getString(i));
                break;
            case Cursor.FIELD_TYPE_BLOB:
                values.put(columns[i], cursor.getBlob(i));
                break;
        }
    }
    return values;
}

Ответ 3

Вы можете перейти на thenewboston там есть для SQLite (и используя ContentValues) от 111-124: D

Во всяком случае, тот, который он преподавал в ContentValues, находится в 117th

Удача: D

PS: Но он также использует курсор:)

Ответ 4

Нет. Вы должны сделать это с помощью курсора и старого хорошего запроса. Я был бы счастлив, если бы запрос мог возвратить массив объектов CV.

Ответ 5

Нет, вам нужно использовать Cursor.