[英]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.