2011-10-13 13 views
30

Voglio ottenere un numero intero da un cursore restituito da una query SQLite, ma so che il numero intero può essere nullo. Sfortunatamente non riesco a trovare alcun metodo Cursor che mi permetta di controllare questo.Cosa farà un SQLiteCursor se una colonna è nullo?

Il codice sarà

mModifiedDate = cursor.getInt(cursor.getColumnIndex(MODIFIED_DATE)); 

mi si aspetterebbe un possibile valore nullo, e questo è infatti auspicabile per varie ragioni, il campo si riferisce al tempo una seconda tabella è stata modificata, e la prima tabella può essere popolato prima che il secondo sia. Sfortunatamente, la documentazione di Cursor dice che se viene lanciata un'eccezione, o se viene restituito un valore di errore o un altro comportamento, viene lasciata all'implementazione e la documentazione di SQLiteCursor non dice NULLA.

Cosa farà questo codice se il campo è nullo? C'è un modo per verificarlo prima di chiamare getInt()?

risposta

53

c'è un metodo isNull(), utilizzare solo se in precedenza per rilevare valori nulli. Ricorda: è piuttosto comune per i metodi che restituiscono un booleano da chiamare getX(), può essere fonte di confusione :)

+2

Ah, grazie! Ciò ha senso. –

+0

Grazie! Un altro buon thread sul caricamento e le date persistenti in andorid possono essere trovati [qui] (http://stackoverflow.com/questions/7363112/best-way-to-work-with-dates-in-android-sqlite/17891061#17891061). – schnatterer

6

Dalla mia esperienza, restituisce 0. Se 0 non è una possibile risposta , quindi puoi controllare 0. Se è una possibile risposta, allora devi fare come suggerito da pgsandstrom.

+2

0 era una possibile risposta, quindi il mio bisogno di un metodo migliore; Ho fatto davvero quello che suggeriva @pgsandstrom. –

Problemi correlati