处理空值

时间:2014-07-15 11:28:34

标签: c# oracle

我今天在调试代码时遇到了一个奇怪的情况。

正如屏幕截图所示,我有object objSystem.Data.OracleClient ExecuteScalar()得到一个值。

将屈服值分配给变量obj,它清楚地显示了一个null,但是执行已经进入if (obj != null)语句,技术上不应该。有什么想法吗?我想知道我的代码是否正确?

enter image description here

3 个答案:

答案 0 :(得分:10)

尝试使用DBNull.Value代替

if(obj != DBNull.Value)

答案 1 :(得分:4)

可以使用DBNull.Value,

null不是任何类型的实例。相反,它是无效的参考。

但是,System.DbNull.Value是对System.DbNull实例的有效引用(System.DbNull是单例,System.DbNull.Value为您提供对该类的单个实例的引用),表示不存在*数据库中的值。

答案 2 :(得分:1)

ExecuteOracleScalar的文档说它执行查询,并将查询返回的结果集中第一行的第一列作为特定于Oracle的数据类型<返回/强>&#34;

据我所知,结果可能是OracleNumber,例如屏幕截图显示的属性IsNullValue