Existe-t-il un moyen d'obtenir l'objet ContentValues à partir de SQLite? Il est très utile que nous puissions insérer ContentValues dans une base de données, et il devrait être plus utile d’obtenir le CV à partir de là.
Vous pouvez utiliser la méthode cursorRowToContentValues (curseur de curseur, valeurs ContentValues) du DatabaseUtils class.
exemple
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();
J'ai écrit ma propre version de la méthode DatabaseUtils.cursorRowToContentValues
que David-mu a mentionnée afin d'éviter un bug avec l'analyse syntaxique des booléens . Il demande à Cursor
d'analyser les ints et les floats en fonction des types de la base de données SQL, plutôt que de les analyser lors de l'appel des méthodes dans 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;
}
Vous pouvez aller à thenewboston il y a un tut pour SQLite (et en utilisant ContentValues) de 111-124: D
Quoi qu'il en soit, celui qu'il a enseigné à propos de ContentValues se trouve dans le 117e
Bonne chance: D
PS: Mais il utilise aussi un curseur :)
Non, vous devez le faire avec un curseur et une bonne vieille requête. Je serais heureux si query pouvait renvoyer un tableau d'objets CV.
Non, vous devez utiliser la variable Cursor
.