Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何在SQLite数据库中处理可为空的整数列_Android_Sqlite_Nullable - Fatal编程技术网

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,该值恰好也是有效值。我需要区分有效值和空值。另

我有一个Android SQLite表定义,如下所示:

create table MyTable(..., myDate integer, ...);
稍后在代码中,我查询此表,通过游标检索myDate的值:

long dateInstant = cursor.getLong(cursor.getColumnIndexOrThrow("myDate"));
然而,我想知道这是否是最好的方法。如果未设置该值(即数据库为null),则上述方法返回0,该值恰好也是有效值。我需要区分有效值和空值。另外,从javadoc for
getLong

结果以及当列值为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);