【问题标题】:How to handle nullable integer columns in SQLite database如何在 SQLite 数据库中处理可为空的整数列
【发布时间】:2013-11-28 04:02:07
【问题描述】:

我有一个这样的 Android SQLite 表定义:

create table MyTable(..., myDate integer, ...);

稍后在我的代码中,我查询此表以通过游标检索 myDate 的值:

long dateInstant = cursor.getLong(cursor.getColumnIndexOrThrow("myDate"));

但是,我想知道这是否是最好的方法。如果未设置该值(即数据库中的 null),则上述方法返回 0,这恰好也是一个有效值。我需要区分有效值和空值。另外,来自getLong的javadoc:

当列值为空、列类型不是整数类型或整数值超出范围 [Long.MIN_VALUE, Long.MAX_VALUE] 时,结果以及此方法是否抛出异常由实现定义。

这似乎表明,如果我没看错的话,在未来的某个时候,Android 中的 SQLite 实现可能会选择抛出异常而不是返回 0。我正在寻找跨 Android 版本的一致解决方案。

简而言之,我怎样才能以一种允许我区分有效值和空值的方式稳健地处理从列中检索整数数据?

【问题讨论】:

    标签: android sqlite nullable


    【解决方案1】:

    你可以的

    long dateInstant  = 0; // some value to represent null
    if (!cursor.isNull (colIndex))
      dateInstance = cursor.getLong (colIndex);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-03-20
      • 1970-01-01
      • 2018-10-29
      • 2016-11-10
      • 1970-01-01
      • 1970-01-01
      • 2015-02-14
      相关资源
      最近更新 更多