gpt4 book ai didi

java - Android 从 sqlite 数据库中获取多个项目

转载 作者:搜寻专家 更新时间:2023-11-01 09:11:21 24 4
gpt4 key购买 nike

我想在不使用 for/while/dowhile 循环的情况下更新(检索并可能编辑)SQLite 数据库中的多个项目

这可以使用 Cursor 吗?我想限制表中的个人查找

是否有一些复杂的 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com