我面临一个奇怪的问题。我从vb.net rest服务框架4.5.2调用oracle存储过程。执行查询后,我正在读取如下参数:
cmd.ExecuteNonQuery()
Dim obj As MyObject= New MyObject
With obj
If cmd.Parameters("Param1").Value IsNot DBNull.Value Then
.strParam1 = cmd.Parameters("Param1").Value.Value
Else
.strParam1 = ""
End If
End With
主要问题是,当param1返回为null时,IsNot DBNull.Value
不起作用,并且因为if
条件达到空值而不是else
而引发错误。错误是Invalid operation on null data
。在SOAP项目中编写了相同的函数,其中框架是4.0并且它工作正常。唯一有效的是我更换了
If cmd.Parameters("Param1").Value IsNot DBNull.Value Then
通过
If cmd.Parameters("Param1").Value <> Nothing Then
那么为什么IsNot DBNull.Value
返回true而不是false?