E 'è solo qualche struttura dati che memorizza insieme di risultati di database di
Sì.
Oppure è una struttura che gestisce solo una riga?
Non esattamente. Il cursore può gestire una o più righe in base alla query di origine. Il cursore è la mappa dei dati e conterrà tutte le righe dei ritorni delle query di origine (selezione). Quindi se la query restituisce centinaia di righe, queste righe vengono inserite in Cursore e il cursore contiene queste cento righe.
È possibile immaginare il cursore come una mappa di dati con dimensione dinamica (simile a Elenco) in cui i dati vengono posizionati come "righe". Ogni riga ha il proprio ID di riga (numero di riga, possiamo dire un puntatore) che viene generato gradualmente mentre vengono inseriti nel cursore e puoi semplicemente spostarti tra le righe con questo numero. Implicitamente ogni cursore ha "puntatore effettivo" posizionato prima della prima riga (posizione -1), quindi se si chiama l'attesa c.getString(0)
verrà generato perché non c'è nulla da recuperare.
Quindi è sempre necessario chiamare cursor.moveToFirst()
che prepara il cursore per la lettura e se è vuoto, il metodo restituisce falso perché non c'è alcuna riga.