Android的SQLite – 光标和ContentValues

有没有办法从SQLite中获取ContentValues对象? 这是非常有用的,我们可以在数据库中插入ContentValues,从那里获取CV应该更有用。

Solutions Collecting From Web of "Android的SQLite – 光标和ContentValues"

您可以使用DatabaseUtils类的方法cursorRowToContentValues(Cursor cursor,ContentValues values) 。

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(); 

我写了David-mu提到的DatabaseUtils.cursorRowToContentValues方法的自己的版本,以避免parsing布尔值错误 。 它要求Cursor根据SQL数据库中的typesparsing整数和浮点数,而不是在调用ContentValues的方法时parsing它们。

 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; } 

你可以去新波士顿有一个从111-124的SQLite(和使用ContentValues):D

无论如何,他教关于ContentValues的是在117

祝您好运:D

PS:但他也使用光标:)

不,你必须用光标和旧的好查询来做到这一点。 如果查询可能返回一个CV对象数组,我会很高兴。

不,你必须使用Cursor