我想在不使用for / while / dowhile循环的情况下更新(检索并可能编辑)SQLite数据库中的多个项目
使用光标可以吗?我想限制表中的个人查找
是否有一些复杂的Android数据对象我可以将SQL查询的所有结果转储到其中,然后我可以解析循环
我听说过Parceable
和可序列化的对象,但这就是我使用数据库的方式。
我目前有方法通过单个行调用元素。我可以将该方法放在for循环中,或者我可以将Cursor的查询放在for循环中但是我不想进行那么多次访问。
public String fetchDay(long rowId) throws SQLException {
Cursor mCursor =
mapDb.query(true, DAY_TABLE, new String[] {KEY_ROWID, KEY_DAY}, KEY_ROWID + "=" + String.valueOf(rowId), null,
null, null, null, null);
if (mCursor != null) {
mCursor.moveToFirst();
}
String result = mCursor.getString(mCursor.getColumnIndex(KEY_DAY));
mCursor.close();
return result;
}
如何在不循环
的情况下获取该表的所有元素并将其存储在复杂对象中洞察力赞赏
答案 0 :(得分:2)
您可以使用以下内容更改查询以返回多行:
KEY_ROWID + " >= " + String.valueOf(firstRowId) + " AND " + KEY_ROWID + " <= " + String.valueOf(lastRowId)
作为你的where子句。
这样,Cursor将返回一系列行,然后您可以使用while循环迭代它,如下所示:
mCursor.moveToFirst();
while (!mCursor.isAfterLast()) {
results.add(mCursor.getString(mCursor.getColumnIndex(KEY_DAY)));
mCursor.moveToNext();
}
结果为List<String>
请注意,此解决方案中使用的while循环比反复查询表要便宜,因为它会迭代Cursor对象,而不是进行多次I / O操作
答案 1 :(得分:1)