2011-10-13 8 views
30

Quiero obtener un entero de un Cursor devuelto por una consulta SQLite, pero sé que el entero puede ser nulo. Desafortunadamente no puedo encontrar ningún método Cursor que me permita verificar esto.¿Qué hará un SQLiteCursor si una columna es nula?

El código será

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

I sería de esperar un posible valor nulo, y esto es de hecho deseable por diversas razones-el campo se refiere al tiempo se modificó una segunda tabla, y la primera tabla puede estar poblado antes que el segundo. Desafortunadamente, la documentación de Cursor dice que si se lanza una excepción, o se devuelve un valor de error, u otro comportamiento, se deja a la implementación, y la documentación de SQLiteCursor no dice NADA.

¿Qué hará este código si el campo es nulo? ¿Hay alguna forma de comprobar esto antes de llamar a getInt()?

Respuesta

53

hay un isNull() -metodo, solo use si de antemano para detectar valores nulos. Recuerde: Es bastante común que los métodos que devuelven un booleano se llamen isX() en lugar de getX(), pueden ser fuente de confusión :)

+2

¡Ah, gracias! Eso tiene sentido. –

+0

Gracias! Se puede encontrar otro hilo bueno sobre las fechas de carga y persistencia en andorid [aquí] (http://stackoverflow.com/questions/7363112/best-way-to-work-with-dates-in-android-sqlite/17891061#17891061) – schnatterer

6

Según mi experiencia, devuelve 0. Si 0 no es una respuesta posible , entonces puedes verificar 0. Si es una respuesta posible, entonces debes hacer lo que pgsandstrom sugirió.

+2

0 era una respuesta posible, de ahí mi necesidad de un método mejor; De hecho, hice lo que sugirió @pgsandstrom. –

Cuestiones relacionadas