如果列为空,SQLiteCursor 会做啥?

Posted

技术标签:

【中文标题】如果列为空,SQLiteCursor 会做啥?【英文标题】:What will a SQLiteCursor do if a column is null?如果列为空,SQLiteCursor 会做什么? 【发布时间】:2011-12-06 21:15:05 【问题描述】:

我想从 SQLite 查询返回的 Cursor 中获取一个整数,但我知道该整数可能为空。不幸的是,我找不到任何允许我检查的 Cursor 方法。

代码将是

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

我希望有一个可能的空值,这实际上出于各种原因是可取的——该字段指的是第二个表被修改的时间,并且可以在第二个表之前填充第一个表。不幸的是,Cursor 的文档说是否抛出异常、返回错误值或其他行为取决于实现,而 SQLiteCursor 文档没有说明任何内容。

如果字段为空,这段代码会做什么?有没有办法在调用 getInt() 之前检查这一点?

【问题讨论】:

【参考方案1】:

有一个isNull()-方法,只需预先使用 if 来检测空值。请记住:返回布尔值的方法被命名为 isX() 而不是 getX() 是很常见的,这可能是一些混乱的根源:)

【讨论】:

谢谢!另一个关于在 andorid 中加载和持久化日期的好帖子可以在 here 找到。【参考方案2】:

根据我的经验,它返回 0。如果 0 不是可能的答案,那么您只需检查 0。如果它是可能的答案,那么您需要按照 pgsandstrom 的建议进行操作。

【讨论】:

0 是一个可能的答案,因此我需要一个更好的方法;我确实按照@pgsandstrom 的建议做了。

以上是关于如果列为空,SQLiteCursor 会做啥?的主要内容,如果未能解决你的问题,请参考以下文章

如果没有顺序的内存空间,realloc 会做啥?

如果找不到匹配项,replace 会做啥? (引擎盖下)

如果构造函数中发生错误,Qt 会做啥? [复制]

如果我正在读取的字节还不存在,BinaryReader 会做啥?

如果 Java 子包不提供特殊的访问关系,它们会做啥?

如果输出缓冲区有数据,调用 bufferevent_free 后会做啥?