我正在学习android中的sqlite。今天我遇到了一个代码,用于在dateabase中查找特定条目并将其返回(用于显示用户)。我对代码中发生的事情感到困惑。首先程序员调用查询方法,然后将光标移动到第一行。
为什么他调用了moveTofirst()方法?此方法不会将光标放在数据库的开头,导致查询方法返回的内容丢失。
Cursor c = database.query(TABLE_NAME,columns, NAME_COL+ "="+ findname, null,null,null,null);
if(c!=null)
{
c.moveToFirst();
name= c.getString(1);
return name;
}
问候。
答案 0 :(得分:3)
没有。根据文档,moveToFirst()的描述是
将光标移动到第一行。
所以基本上,你将光标设置为结果的第一行(而不是表本身),因为光标只包含与查询匹配的行而不包含表中的所有行(除非你查询它们) )。
答案 1 :(得分:2)
您可能想要调用moveToFirst()的另一个原因是,当您第一次查询时,游标从索引-1开始。因此,您必须调用moveToFirst()或任何其他moveTo ..函数才能访问正确的行。
答案 2 :(得分:1)
调用moveToFirst()
可以测试查询是否返回了empty
集(通过测试return
值)并将cursor
移动到第一个结果(当该集合不是empty
)。
了解link
的更多信息答案 3 :(得分:1)
当您进行查询时,您将获得所有结果,“封装”在Cursor
对象中。此游标包含您要求的所有行,但不包含整个数据库!!
要查看结果,您必须将Cursor移动到它包含的行中。在查询之后,光标不指向任何内容。调用moveToFirst()
使Cursor指向查询结果的第一行。
另外,正如你问题的this answer所述,你也可以测试是否实际返回了一些结果。