为什么在数据库android中进行查询后调用moveToFirst()

时间:2013-06-26 12:36:58

标签: java android database sqlite

我正在学习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;
}

问候。

4 个答案:

答案 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所述,你也可以测试是否实际返回了一些结果。