Android的SQLite – 光标和ContentValues

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

  • 如何用ORMLite更新列
  • 从CSV文件填充Android数据库?
  • 连接池无法授予与线程的连接
  • Android SQLiteException:无法将db的语言环境更改为“en_US”
  • 从SQLite数据库表中删除所有的表行
  • 从Android Studio浏览SQLite数据库
  • Android应用程序应该在哪里调用SQLite getWritableDatabase?
  • 在sqlite android中搜索波斯语/阿拉伯语会给出错误的结果
  • 您可以使用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