Есть ли способ получить объект ContentValues из SQLite? Очень полезно, что мы можем вставлять ContentValues в БД, и было бы более полезно получить оттуда резюме.
Android SQLite - Cursor & ContentValues
Ответ 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
.