Android 如何在SQLite数据库中处理可为空的整数列
我有一个Android SQLite表定义,如下所示:Android 如何在SQLite数据库中处理可为空的整数列,android,sqlite,nullable,Android,Sqlite,Nullable,我有一个Android SQLite表定义,如下所示: create table MyTable(..., myDate integer, ...); 稍后在代码中,我查询此表,通过游标检索myDate的值: long dateInstant = cursor.getLong(cursor.getColumnIndexOrThrow("myDate")); 然而,我想知道这是否是最好的方法。如果未设置该值(即数据库为null),则上述方法返回0,该值恰好也是有效值。我需要区分有效值和空值。另
create table MyTable(..., myDate integer, ...);
稍后在代码中,我查询此表,通过游标检索myDate的值:
long dateInstant = cursor.getLong(cursor.getColumnIndexOrThrow("myDate"));
然而,我想知道这是否是最好的方法。如果未设置该值(即数据库为null),则上述方法返回0,该值恰好也是有效值。我需要区分有效值和空值。另外,从javadoc forgetLong
:
结果以及当列值为null、列类型不是整数类型或整数值超出范围[Long.MIN\u value,Long.MAX\u value]时,此方法是否引发异常由实现定义
这似乎表明,如果我读对了,在将来的某个时候,Android中提供的SQLite实现可能会选择抛出异常而不是返回0。我正在寻找跨Android版本的一致解决方案
简言之,如何以一种能够区分有效值和空值的方式,稳健地处理从列中检索整数数据的过程?您可以这样做
long dateInstant = 0; // some value to represent null
if (!cursor.isNull (colIndex))
dateInstance = cursor.getLong (colIndex);
你能行
long dateInstant = 0; // some value to represent null
if (!cursor.isNull (colIndex))
dateInstance = cursor.getLong (colIndex);