gpt4 book ai didi

android cursor.moveToNext()?

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:51:40 26 4
gpt4 key购买 nike

我正在尝试将表中的所有列查询到一个长 TextView 和/或字符串中。我知道这可能不是做事的正确方法,但我必须这样做。如果我错了,请纠正我,我的印象是下一步会得到行中的下一列:

Cursor c = db.get();
if(c.moveToFirst){
do{
string = c.getString(0);
}while(c.moveToNext);
}

我以为这会获取第一列并显示其所有内容,而不是我获取第一列和第一行。我究竟做错了什么?有没有更好或更实际的方法来获取此信息而不使用 ListView?

最佳答案

简单的用法是:

Cursor cursor = db.query(...);
while (cursor.moveToNext()) {
...
}

moveToFirst 用于在您已经到达某个位置后需要从头开始迭代时使用。

除非需要,否则避免使用 cursor.getCount()。永远不要在 getCount() 上使用循环。

getCount 开销很大——它遍历许多记录来计算它们。它不返回存储的变量。第二次调用可能有一些缓存,但第一次调用在计算之前不知道答案。

如果您的查询匹配 1000 行,游标实际上只有第一行。每个 moveToNext 搜索并找到下一个匹配项。 getCount 必须找到所有 1000 个。如果只需要 10 个,为什么要遍历所有?为什么要迭代两次?

此外,如果您的查询不使用索引,getCount 可能会更慢 - 即使查询只匹配 100 条记录,getCount 可能会超过 10000 条记录。为什么循环 20000 而不是 10000?

关于android cursor.moveToNext()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10081631/

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