soci::i_ok 和 soci::i_null 之间的区别

Difference between soci::i_ok and soci::i_null

我找不到 soci::i_ok 和 soci::i_null 常量的解释。在此 page 中将它们作为可能的数据状态提及,但未定义其确切含义。

我想知道 soci::i_ok 是否为真是否意味着数据不为空?

(soci::i_ok == indicatorX) == (soci::i_null != indicatorX)  ---?

我在本页的主题下找到了对问题的一些解释:Handling nulls and other conditions。在此分享,造福社区。

根据文档,soci::i_ok 表示返回的值没有任何错误,并且包含非空值。 soci::i_null 表示该值为空,因为该列包含空值。

所以,是的,(soci::i_ok == indicatorX) 表示 (soci::i_null != indicatorX) 并且没有提取错误。由于 soci::i_ok 包含 soci::i_null 的使用,我猜这两个常量是出于不同的原因放置的(比如如果你想要一个显式的 null 检查)。