簡體   English   中英

為什么在數據庫android中查詢后調用moveToFirst()

[英]Why call moveToFirst() after making query in database android

我正在學習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;
}

問候。

否。根據文檔,對moveToFirst()的描述為

將光標移到第一行。

因此,基本上,您將游標設置為結果的第一行(而不是表本身),因為游標僅包含與查詢匹配的行,而不包含表中的所有行(除非您查詢它們)。

您可能要調用moveToFirst()的另一個原因是,當您第一次查詢時,光標從索引-1開始。 因此,您必須調用moveToFirst()或任何其他moveTo ..函數才能訪問適當的行。

調用moveToFirst()允許您測試查詢是否返回empty集(通過測試return值),並將cursor到第一個結果(當集不為empty )。

有關鏈接的更多信息

進行查詢時,將所有結果“封裝”在Cursor對象中。 該游標包含您要求的所有行,但不包含整個數據庫!

要查看結果,您必須將游標移動到它包含的行中。 在查詢之后,光標沒有指向任何內容。 調用moveToFirst()使Cursor指向查詢結果的第一行。

而且,正如您在問題的答案中所說,您還可以測試是否實際返回了一些結果。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM