我想更新(检索并可能编辑)SQLite 数据库中的多个项目,而不使用 for/while/dowhile 循环
使用光标可以实现这一点吗?我想限制表中的个人查找
是否有一些复杂的 Android 数据对象,我可以将 SQL 查询的所有结果转储到其中,然后我可以解析 for 循环
我听说过 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;
}
如何获取该表的所有元素并将其存储在一个复杂的对象中而不循环
赞赏洞察力
最佳答案
您可以更改查询以返回多行,方法如下:
KEY_ROWID + " >= " + String.valueOf(firstRowId) + " AND " + KEY_ROWID + " <= " + String.valueOf(lastRowId)
作为您的 where 子句。
这样做,游标将返回一系列行,然后您可以使用 while 循环对其进行迭代,如下所示:
mCursor.moveToFirst();
while (!mCursor.isAfterLast()) {
results.add(mCursor.getString(mCursor.getColumnIndex(KEY_DAY)));
mCursor.moveToNext();
}
结果为List<String>
请注意,此解决方案中使用的 while 循环比一遍又一遍地查询表要便宜得多,因为它在内存上的 Cursor 对象上进行迭代,而不是进行多次 I/O 操作
关于java - Android从sqlite数据库中获取多个项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8104302/